回答編集履歴

1

StateMachineBehaviourによる方法を追記

2021/07/18 01:10

投稿

Bongo
Bongo

スコア10809

test CHANGED
@@ -63,3 +63,55 @@
63
63
  }
64
64
 
65
65
  ```
66
+
67
+
68
+
69
+ ## StateMachineBehaviourによるApply Root Motion切り替え
70
+
71
+
72
+
73
+ まず、当初の回答で追加したキャラクター用のスクリプトの`OnAnimatorMove`は削除してしまい、再び「歩行アニメーションを再生すれば前進し、ジャンプアニメーションを再生すれば上方へ跳び上がる」という状態にしておきます。
74
+
75
+ そして、下記のようなスクリプトを作り...
76
+
77
+
78
+
79
+ ```lang-csharp
80
+
81
+ using UnityEngine;
82
+
83
+
84
+
85
+ public class PartialRootMotionDisabler : StateMachineBehaviour
86
+
87
+ {
88
+
89
+ public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
90
+
91
+ {
92
+
93
+ animator.applyRootMotion = false;
94
+
95
+ }
96
+
97
+
98
+
99
+ public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
100
+
101
+ {
102
+
103
+ animator.applyRootMotion = true;
104
+
105
+ }
106
+
107
+ }
108
+
109
+ ```
110
+
111
+
112
+
113
+ それをApply Root Motionオフ状態にしたいステートにアタッチします。これならいかがでしょうか。
114
+
115
+
116
+
117
+ ![図](ee2af9bef73f8f7867afc637bed2ce63.png)