🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

Q&A

1回答

974閲覧

Unity3D キャラクターを斜め向きにして移動

beryberybery

総合スコア41

C#

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

Unity3D

Unity3Dは、ゲームや対話式の3Dアプリケーション、トレーニングシュミレーション、そして医学的・建築学的な技術を可視化する、商業用の開発プラットフォームです。

Unity

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

0グッド

0クリップ

投稿2021/02/12 15:45

斜めにキャラクターの向きを変更させ

移動しようと試行錯誤したのですが、

向きが上手く変更されず、困っております。

どなたか詳しい方いらっしゃいましたら教えて頂けたら幸いですm(_ _)m

C#

1 void Update() 2 { 3 characterController.Move(Velocity); 4 5 if (Input.GetKey(KeyCode.W)) 6 { 7 transform.rotation = Quaternion.Euler(0, 0, 0); 8 characterController.Move(this.gameObject.transform.forward * MoveSpeed * Time.deltaTime); 9 animator.SetBool("Run", true);//③Runをtrueにする 10 } 11 12 else if (Input.GetKeyUp(KeyCode.W)) 13 { 14 animator.SetBool("Run", false);//③Runをfalseにする 15 } 16 if (Input.GetKey(KeyCode.D)) 17 { 18 transform.rotation = Quaternion.Euler(0, 90, 0); 19 characterController.Move(this.gameObject.transform.forward * MoveSpeed * Time.deltaTime); 20 animator.SetBool("Run", true);//③Runをtrueにする 21 } 22 23 else if (Input.GetKeyUp(KeyCode.D)) 24 { 25 animator.SetBool("Run", false);//③Runをfalseにする 26 } 27 28 Velocity.y += Physics.gravity.y * Time.deltaTime; 29 30 }

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

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

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

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

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

guest

回答1

0

入力をすべてチェックして状態を確定してからオブジェクトの操作をすればよいかと思います。

enum DIRECTION { N = 0, U = 1 << 0, D = 1 << 1, L = 1 << 2, R = 1 << 3, UR = (U|R), }; DIRECTION dir = DIRECTION::N; if (Input.GetKey(KeyCode.W)){ DIRECTION |= DIRECTION::U; } if (Input.GetKey(KeyCode.D)){ DIRECTION |= DIRECTION::R; } if ( dir != DIRECTION::N ) { float euler = 0; switch ( dir ) { case DIRECTION::U : euler = 0.0; break; case DIRECTION::UR: euler = 45.0; break; case DIRECTION::R : euler = 90.0; break; } transform.rotation = Quaternion.Euler(0, euler, 0); characterController.Move(this.gameObject.transform.forward * MoveSpeed * time.deltaTime); animator.SetBool("Run", true);//③Runをtrueにする }

投稿2021/02/13 00:19

編集2021/02/13 03:15
Serbonis

総合スコア586

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

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

Serbonis

2021/03/26 10:51 編集

(取り消し)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問