ジャンプ中にほかの操作を受け付けないようにする方法がわかりません。
現在ジャンプ動作はできたのですが、ジャンプ中に左右に動いて、慣性を出すことが出来ません。
元々「Unity2D超入門講座」というテキストを元に勉強していて、スクリプトはこの中のものを参考に作りました。
慣性を出す方法については色々なサイトを探してみましたが良い探し方もわからず、挙動が不安定になってしまい改善の余地が見えませんでした。
もしよければ改善策を教えてください。コードは以下になっています。
C#
1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4 5public class Walkmove : MonoBehaviour 6{ 7 // Start is called before the first frame update 8 public float speed = 3; 9 public float jumppower = 15; 10 float vx = 0; 11 bool rdushFlag = false; 12 bool ldushFlag = false; 13 bool pushFlag = false; 14 bool jumpFlag = false; 15 bool groundFlag = false; 16 Rigidbody2D rbody; 17 void Start() 18 { 19 rbody = GetComponent<Rigidbody2D>(); 20 rbody.constraints = RigidbodyConstraints2D.FreezeRotation; 21 } 22 23 // Update is called once per frame 24 void Update() 25 { 26 vx = 0; 27 if (Input.GetKey("right")) 28 { 29 if (groundFlag == true) 30 { 31 vx = speed; 32 rdushFlag = true; 33 } 34 } 35 if (Input.GetKey("left")) 36 { 37 if (groundFlag == true) 38 { 39 vx = -speed; 40 ldushFlag = true; 41 } 42 } 43 if(Input.GetKey("space") && groundFlag) 44 { 45 if (pushFlag == false) 46 { 47 jumpFlag = true; 48 pushFlag = true; 49 } 50 } 51 else 52 { 53 pushFlag = false; 54 } 55 } 56 void FixedUpdate() 57 { 58 rbody.velocity = new Vector2(vx, rbody.velocity.y); 59 if (jumpFlag) 60 { 61 jumpFlag = false; 62 rbody.AddForce(new Vector2(0, jumppower), ForceMode2D.Impulse); 63 } 64 } 65 void OnTriggerStay2D(Collider2D collision) 66 { 67 groundFlag = true; 68 } 69 void OnTriggerExit2D(Collider2D collision) 70 { 71 groundFlag = false; 72 } 73}
回答1件
あなたの回答
tips
プレビュー