こんにちは、質問失礼致します。
unity2020を使用しています。
アニメーションの途中でだけキャラクターを動かしたいのですが、なかなかうまくいきません。
現在はアニメーション中に移動・回転のアニメーションをブレンドする事で試行錯誤しています。
根本の考え方から間違っている気がするのでご教授頂けたら幸いです。
・やりたい事
ジャンプで空中にいる時だけ移動・回転をしたい。
ジョイスティックからの入力で、倒し方よって回転の値や移動距離を増減させたい。
使用するジャンプアニメーション
<予備動作→ジャンプ空中→着地動作>
ジャンプ空中の時だけジョイスティックからの入力を受け付けて回転・移動させたいです。
どうぞよろしくお願い致します。
質問だけではやりたい事の説明としては不足な点がありますが、ジャンプを含む移動は全部スクリプトで制御し、回転は「向いている方向」だけスクリプトで指定して、回転はアニメーションで操作するのがよいでしょう。もちろんルートモーションは使いません。
つまり、最初からキャラクターモデルに対して作るのではなく、ジャンプ処理まではカプセルか何かで作り、その後にキャラクターモデルに差し替えるのがよいでしょう。
初心者はいきなりキャラクターモデルを操作しようとして大抵この辺が理解できず挫折します。
修正依頼ありがとうございます!
説明不足で申し訳ありません、今回物理を利用しているのでRigidbodyを使う動きについて質問させていただいています。ジャンプのアニメーションには上下の移動が含まれているので、前進に
rb.AddForce(transform.forward * 2, ForceMode.Impulse);
を使用しました。
実行のタイミングにアニメーションイベントを使いたかったのですが、いかがでしょうか?
回転も瞬間的に力を加えるようにしたいのですが、トルクでうまくいかず行き詰まっております…。
適用しているのは親オブジェクトで、キャラクターモデルはその子にしてあります。
よろしかったらご助言いただけると助かります!よろしくお願い致します。
追記・トルクの問題は解決しました!
> ジャンプのアニメーションには上下の移動が含まれている
この時点で「そのアニメーション」がないとなんとも言えないですね。ルートモーションを使っているとややこしいです。
あと、この質問の記述からは、「こうなって欲しい」という動きをたぶん誰も想像できないと思います。
修正依頼ありがとうございます!
Rigidbodyを使用しているのでルートモーションは使っていないです😄
クリアになった問題を取り除くと、「アニメーションの途中でだけキャラクターを動かしたい」です。
手法としてアニメーションイベントの使用が適しているかどうかを追記しました。
質問の内容が多すぎるようなので、「ジョイスティックからの入力で、倒し方よって回転の値や移動距離を増減させたい。」に関しては今後自己解決を目指します。
どうぞよろしくお願い致します。
もしかして誤解があるかもしれませんので追記させていただきます。
キャラクターをジャンプさせたい!→キャラクターコントロールをつけてアニメーターを作成したり、スクリプトを作成する
ではなく、
キャラクターがジャンプアニメーションを再生する→中間地点から一定の間でのみ、キーコントロールを受け付け、移動・回転をさせたいになります。スクリプトで書く場合、物理なのでvoid FixedUpdate()以下になります。
「こうなって欲しい」が伝わると良いのですが…。

回答1件
あなたの回答
tips
プレビュー