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

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

新規登録して質問してみよう
ただいま回答率
85.44%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

Q&A

0回答

813閲覧

unityでブリンク移動(ステップ移動)を追加したい

rnido

総合スコア0

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Unity

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

0グッド

0クリップ

投稿2023/03/21 14:40

実現したいこと

uniyuでブリンク(回避)を追加したい。

前提

unityで見下ろし方のゲームを作っています。
回避アクションとしてブリンク(ステップ移動)を追加したいです。

発生している問題・エラーメッセージ

移動キーとスペースキーを同時押しすることでブリンクしたいのですが、実際には動きが止まるだけです。
なぜキャラクターが動いてくれないのでしょうか。
回避に関しては、アニメーションを追加してそのboxcolliderをいじりたいと思っています。

該当のソースコード

c#

1 void Update() 2 { 3 movement = new Vector2(Input.GetAxisRaw("Horizontal"), Input.GetAxisRaw("Vertical")); 4 horizontal = Input.GetAxis("Horizontal"); 5 vertical = Input.GetAxis("Vertical"); 6 7 if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.S)) 8 { 9 dont2 = false; 10 } 11 if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.D)) 12 { 13 dont2 = false; 14 } 15 if (Input.GetKeyUp(KeyCode.W)) 16 { 17 dont2 = true; 18 } 19 if (Input.GetKeyUp(KeyCode.A)) 20 { 21 dont2 = true; 22 } 23 if (Input.GetKeyUp(KeyCode.S)) 24 { 25 dont2 = true; 26 } 27 if (Input.GetKeyUp(KeyCode.D)) 28 { 29 dont2 = true; 30 } 31 32 if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.A)) 33 { 34 movement.x = 0; 35 movement.y = 0; 36 } 37 if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.D)) 38 { 39 movement.x = 0; 40 movement.y = 0; 41 } 42 if (Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.A)) 43 { 44 movement.x = 0; 45 movement.y = 0; 46 } 47 if (Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.A)) 48 { 49 movement.x = 0; 50 movement.y = 0; 51 } 52 53void FixedUpdate() 54 { 55 Vector2 position = rigidbody2d.position; 56 if (canwalk) 57 { 58 if (dont2) 59 { 60 position.x = position.x + speed * horizontal * Time.deltaTime; 61 position.y = position.y + speed * vertical * Time.deltaTime; 62 rigidbody2d.MovePosition(position); 63 } 64 } 65 if (Input.GetKey(KeyCode.W) && Input.GetKey(KeyCode.Space)) 66 { 67 if (canwalk) 68 { 69 70 canwalk = false; 71 blinky = true; 72 } 73 74 75 } 76 if (Input.GetKey(KeyCode.S) && Input.GetKey(KeyCode.Space)) 77 { 78 if (canwalk) 79 { 80 81 canwalk = false; 82 blinkym = true; 83 } 84 85 86 } 87 if (Input.GetKey(KeyCode.A) && Input.GetKey(KeyCode.Space)) 88 { 89 if (canwalk) 90 { 91 92 canwalk = false; 93 blinkxm = true; 94 95 } 96 97 } 98 if (Input.GetKey(KeyCode.D) && Input.GetKey(KeyCode.Space)) 99 { 100 if (canwalk) 101 { 102 103 canwalk = false; 104 blinkx = true; 105 106 } 107 } 108 if (blinky) 109 { 110 position.y = position.y + blink * Time.deltaTime; 111 Invoke("stopblink", 1f); 112 } 113 if (blinkym) 114 { 115 position.y = position.y - blink * Time.deltaTime; 116 Invoke("stopblink", 1f); 117 } 118 if (blinkx) 119 { 120 position.x = position.x + blink * Time.deltaTime; 121 Invoke("stopblink", 1f); 122 } 123 if (blinkxm) 124 { 125 position.x = position.x - blink * Time.deltaTime; 126 Invoke("stopblink", 1f); 127 } 128 } 129 void stopblink() 130 { 131 blinkx = false; 132 blinkxm = false; 133 blinky = false; 134 blinkym = false; 135 canwalk = true; 136 }

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.44%

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

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

質問する

関連した質問