質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

解決済

1回答

2233閲覧

unity 2回キー入力でダッシュのスクリプトについて

yoshiteru21

総合スコア44

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

1クリップ

投稿2019/09/03 06:36

右に移動するキーを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コード

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

push変数に着目してコードを見てみましょう。
if (!push)の条件判定が行われる前には必ずpush = false;が実行されるようになっているため、このコードではif文のelseブロックが実行されることはありません。

C#

1if (!run) //走っていないとき 2{ 3 if (Input.GetKey(KeyCode.D)) 4 { 5 push = false; 6 // (省略) 7 if ((Input.GetButtonDown("Horizontal") || Input.GetButtonDown("Vertical"))) 8 { 9 if (!push) 10 { 11 push = true; 12 // (省略) 13 } 14 else 15 { 16 // (省略) 17 } 18 } 19 } 20}

投稿2019/09/03 07:51

ku__ra__ge

総合スコア4524

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoshiteru21

2019/09/03 08:08

見落としていました すみませんありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問