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

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

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

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

Q&A

0回答

843閲覧

Unityのジャンプの仕様

Hiyo17

総合スコア0

Unity

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

0グッド

0クリップ

投稿2020/08/29 05:18

編集2020/08/30 08:20

前提・実現したいこと

UnityではスタンダードアセットのThirdPersonUserControlを3Dモデルにアタッチすることで移動やジャンプができるようになりますよね。
そこで質問なのですが、このスクリプトではジャンプ中に移動をすることができません。(ジャンプ中は矢印キーが効かない)
なので、これを書き換えて、ジャンプ中でも移動できるようにしたいです。(3Dマリオのような感じで、ジャンプ中でも方向移動ができるようにしたいです)Webサイトで調べても出てこず困っています。方法を教えてください。

試したこと

接地判定に関わっていそうな箇所を消したりしてみたのですが、うまくいきませんでした。
スクリプトはアセットストアから無料で入手できる、スタンダードアセットに入っているThirdPersonUserControlとThirdPersonCharacterというスクリプトです。全文は字数の関係で載せられませんでしたが、以下、ThirdPersonCharacter
スクリプトの一部を載せておきます。このあたりが怪しいと思うのですが。。。

C#

1 void HandleGroundedMovement(bool crouch, bool jump) 2 { 3 // check whether conditions are right to allow a jump: 4 if (jump && !crouch && m_Animator.GetCurrentAnimatorStateInfo(0).IsName("Grounded")) 5 { 6 // jump! 7 m_Rigidbody.velocity = new Vector3(m_Rigidbody.velocity.x, m_JumpPower, m_Rigidbody.velocity.z); 8 m_IsGrounded = false; 9 m_Animator.applyRootMotion = false; 10 m_GroundCheckDistance = 0.1f; 11 } 12 } 13 14 public void OnAnimatorMove() 15 { 16 // we implement this function to override the default root motion. 17 // this allows us to modify the positional speed before it's applied. 18 //条件無くすとジャンプ中止まる 19 if (m_IsGrounded && Time.deltaTime > 0) 20 { 21 //移動するのに必要な部分!! 22 Vector3 v = (m_Animator.deltaPosition * m_MoveSpeedMultiplier) / Time.deltaTime; 23 24 //we preserve the existing y part of the current velocity. 25 v.y = m_Rigidbody.velocity.y; 26 m_Rigidbody.velocity = v; 27 } 28 }

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

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

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

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

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

Himiku

2020/08/29 10:24

スタンダードアセットの該当するスクリプトがアニメーションでキャラクターを動かしているのか、アニメーションで動かしているのかをまず調べて質問した方が、回答を得やすいです。(回答者側が調べる手間が減るため。) また、ジャンプ中にどのように移動したいのかも漠然としています。 移動とジャンプを合わせるという記述から、ジャンプ中にも地上と全く同じように 前後左右に移動すると推測できますが、確信が持てません。 以上2点を追記されることをお勧めします。
Hiyo17

2020/08/30 07:36 編集

アニメーションでキャラクターを動かしているのか、アニメーションで動かしているのかとはどういうことでしょうか。ジャンプ中の移動に関しては、仰るとおりジャンプ中の前後左右の移動のことです。
Himiku

2020/08/30 14:03

すみません、私の方で記載に誤りがありました。 正しくは「アニメーションでキャラクターを動かしているのか、物理演算で動かしているのか」です。 ただ、こちらに関してはスクリプトを記載されたことで解決しているので、追記の必要はありません。 また、複数のユーザーが「やってほしいことだけを記載した丸投げの質問」という評価を下したようです。私もそれについては同感で、そう感じる原因は「何も考えてないように見えるから」だと思います。 以下、そう見えないようにする解決策です。 ・自分で、ジャンプ中に移動処理をやる方法を考えてみる →何1つ案が浮かばなかったら、知識不足です。  Unityがどのようにキャラクターを移動させているのかの知識を検索したり、当該スクリプトを読んで確認しましょう。 ・知識はあるのに、スクリプトが読めない →スクリプトの中で、どうしても分からない処理があり、検索しても出てこない場合は再度質問しましょう。   ・接地判定を消してもうまく行きませんでした →接地判定は本当に消えているのか、デバッグした結果を添付しましょう 「ジャンプ中に移動させる」のような内容を検索しても、具体的すぎて検索できません。仮に、この方法でしか検索・質問できないようであれば、永遠に分からない処理を人に聞くことでしか解決できなくなってしまいます。再度上記事項を追記願います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問