右に移動するキーを2回押したとき、ダッシュするスクリプトを作成したのですが、速さの変更はまだしていませんが、ダッシュの動作をしません。
まず、Dボタンを押したときに右に移動し、!pushのときにpushをtrueにし、方向ベクトルを取得した後、一度ボタンを離し1秒以内に同じボタンが押されたらDashの動作が始まるというものです。
ですが、普通に歩いているだけでした。
原因は一体何でしょうか?お願い致します。
右入力時のスクリプトの部分のみです。
float
1 if (!run) //走っていないとき 2 { 3 if (Input.GetKey(KeyCode.D)) 4 { 5 push = false; 6 run = false; 7 x = 1; 8 //入力方向へ移動 9 rigidbody2D.velocity = new Vector2(x * speed, rigidbody2D.velocity.y); 10 //localScale.xを-1にすると画像が反転する 11 Vector2 temp = transform.localScale; 12 temp.x = x; 13 transform.localScale = temp; 14 //Wait→Dash 15 anim.SetBool("Walk", true); 16 if ((Input.GetButtonDown("Horizontal") || Input.GetButtonDown("Vertical"))) 17 { 18 if (!push) 19 { 20 push = true; 21 // 最初に移動キーを押した時にその方向ベクトルを取得 22 direction = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); 23 nowTime = 0f; 24 25 } 26 else 27 { 28 // 2回目に移動キーを押した時の方向ベクトルを取得 29 var nowDirection = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); 30 31 // 確認の為、最初に押した方向と2回目に押した方向の角度をコンソールに出力 32 Debug.Log(Vector2.Angle(nowDirection, direction)); 33 34 // 押した方向がリミットの角度を越えていない かつ 制限時間内に移動キーが押されていれば走る 35 if (Vector2.Angle(nowDirection, direction) < limitAngle 36 && nowTime <= nextButtonDownTime) 37 { 38 run = true; 39 anim.SetBool("Dash", true); 40 } 41 } 42 } 43コード
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/09/03 08:08