前回 からの続きです。
今回は、Bar(横に伸びてる棒)を掴んで移動している時のAnimationを作ってみることにします。
Animatorの設定
アニメーションの種類として、「何もしていない」「走っている」「はしご」「バー」「落下」があるとします。
※実際は「動いているか・動いていないか」というのがありそうですが、今は考えないでおきます。
というわけで、以下の様なStateとフラグを作っておきます。
それぞれのTransitionは、フラグの条件の組み合わせで定義するとします。
まだいろいろ調整中なのでどう定義するかは割愛しますが、およそ予想がつくのではないでしょうか。
Animationの作成
作成と編集までの準備
Project -> Assets の部分を右クリックして、Create -> Animation を選びます。
名前を BarAnimation
とでもしておきます。
次にUnityChanにAttachされている Animatorの OnBar
Stateの Motion の部分に今作成した BarAnimation をD&Dなどで登録します。
次に、メニューから Window -> Animation を選択して、 Animation編集Windowを表示します。
そこで、図の部分から「BarAnimation」を選択しておきます。こうすると編集できるようになります。
Sceneタブを選択して、UnityChanを選んでみます。
そこで更に、Animation Windowに戻って、再生ボタンを押すと何か妙なポーズになります。
これが、BarAnimation
による現状の動作になります。
あとは、これが思うような動作になるように Animation編集Windowで作業をしていきます。
どうやってAnimationさせるか
BlockのAnimationを作った時 と同様に必要なパーツの角度や位置を時間軸に沿って定義していくわけです。
問題はどの値を操作すると良いか、ということです。
適当に試してみていると、Add CurveのメニューにAnimator
というのがあります。
どうやら、これの値を操作するとよしなにその部位が動いてくれるようです。
また、対象とした部位だけでなく、他の部位もある程度連動して動くようなので、比較的自然な動作が作れるのかもしれません(私には無理ですが…)。
例えば、「肩を上げる→体が傾く」というような感じに見えました。
(余談)より低レベルなAnimationのさせ方?
この他にも、もっと低レベル?な値を操作してAnimationさせることもできます。
以下の部位のRotationをいじると、もっと自由度の高い(だが面倒くさい)Animationが可能になるのではないでしょうか。
肩〜手
下図のように、左側ならば
- LeftShoulder: 肩の根本
- LeftArm: これも肩の辺り
- LeftForeArm: 肘
- LeftHand: 手首
という構成になっています。
腿〜足首
下図のように、左側ならば
- LeftUpLeg: 腿
- LeftLeg: 膝
- LeftFoot: 足首
という構成になっています。
Animationの作成
はっきりいって行き当たりばったりで作っていますので、どうやると良いかなどは上手く説明できません。
気合いで納得がいく動きになるまで調整します。
今回、腕の辺りは以下のパラメータをいじっています。
- Arm Down-Up
- Forearm Stretch
- Forearm Twist In-Out
- Shoulder Down-Up
あと、何故か、体が下の方にずれてしまうので、
強引に Character1_Reference#Position.y
で位置を上にずらしています。
とりあえず作ってみましたが、クソゲー感がより増した感じです。
首とか体とか足とかも少しいじればいいんでしょうが、、、まあ、これはこれで趣があって良いですねw
おわりに
現状付けなくても良いレベルのAnimationですが、頑張ればマシになる道筋を付けることはできた感じでしょうか。