Unity2018.1.5f1
Windows10
□
今回はユニティちゃんに剣を振ってもらいます。
以下の3つの無料アセットをインポートしてください。
■ユニティちゃんに剣を振らせる
剣を振るアニメーションをセットする
まずはとりあえずユニティちゃんをSceneに置き、剣を振るアニメーションクリップをセットしたAnimatorControllerをセットして再生してみましょう。
剣を振るアニメーションクリップはAttack1を使います。
Project > Assets > mode > WomanWarrior > Attack1
アニメーションクリップはWomanWarriorの三角マークをクリックするとその中にあります。
Attack1を見つけたらそれをAnimatorControllerのウィンドウの中にドラッグ&ドロップで放り込みます。
そのAnimatorControllerをユニティちゃんのAnimatorにセットしたら再生してみてください。
そうするとこのような中腰の姿勢になります。
なぜそうなるかと言うとアニメーションクリップの問題なので修正しましょう。
アニメーションクリップを修正する
再びAttack1をクリックしてください。
そしてInspector右上のEditをクリックします。
続いてRigのタブをクリックし、Animation TypeをHumanoidにしてからApplyをクリックします。
そうするとUnityに適したボーンを設置された人間型のオブジェクトだと誰でもそのアニメーションを再生できるようになります。
Configureのボタンが出たらOKです。
こうして再生すると剣を振るアニメーションが出るはずです。
剣をセットする
次は剣をセットします。
Project > Assets > Simple Medieval Sword > Mesh > Medieval Sward
普通に出すとこんなにサイズが違います。
サイズを変える前にまずユニティちゃんの右手の子オブジェクトにします。
右てを探すのが面倒なのですが頑張って探してください。
unitychan > Character1_Reference > Character1_Hips > Character1_Spine1 > Character1_Spine2 > Character1_RightShoulder > Character1_RightArm > Character1_RightForeArm > Character1_RightHand
位置を合わせるのは面倒なのですがこんな感じに落ち着きました。
さて、無事に剣を振ってくれたでしょうか?
スポンサーリンク
■剣が当たるようにする
CapsuleColliderを付ける
さあ次は実際に剣が相手に当たるようにしましょう。
まずは剣にColliderを付けます。
Colliderの種類は何でも良いのですが私はCapsuleColliderにしました。
サイズはこのようにしました。
Is Triggerは物理判定をなくすためのものなので、敵に当たっても振りぬくためにチェックを入れてください。
そして次で紹介するアニメーションイベントでColliderを出し入れするためにチェックを外して消しておきます。
アニメーションイベントを設定する
アニメーションイベントはアニメーションクリップで設定しておくと、アニメーションの遷移中にAnimatorControllerを通じてスクリプトに値を送ることができます。
再びAttack1のInspectorで編集をします。
今回はAnimationタブです。
Eventsという文字の下のボタンを押すと目盛りにマークが出るのでイベントを起こしたいところにそれを合わせ、下の空欄に値を入力します。
今回は最初と最後に設置し、FunctionにそれぞれAttack1Start、Attack1Endと入力してください。
セットできたら最後にApplyをクリックして終わりです。
AnimatorControllerを作り直す
今度は待機状態からマウス左クリックで攻撃するようにするので新たにAnimatorControllerを作ります。
まずThe Woman WarriorのアニメーションクリップのIdle1、Attack1の順に放り込みTransitionを互いから出るようにします。
Transitionが分からない方はこちらをお読みください。
【UnityC#講座】AnimatorControllerの使い方
ParametersはBoolでAttackと名付けました。
+ボタンから作ります。
TransitionはどちらもHas Exit Timeのチェックを外し、Idle1から伸びる方はAttackのTrueを、Attack1から伸びる方はAttackのFalseになるようにします。
そしてユニティちゃんにAnimatorControllerをセットしましょう。
Apply Root Motionはチェックが入れてあるとアニメーションに合わせて移動してしまうのでチェックを外します。
Idle1をループするようになる
Idle1がループしないようになっていたので、先ほどAttack1でしたようにEditしましょう。
先ほどと同じAnimationタブからLoop timeを見つけチェックを入れます。
そうするとIdle1のアニメーションを繰り返すようになります。
そして右下のApplyボタンをクリックしてください。
スクリプトを書く
以下のスクリプトをユニティちゃんにアタッチしてください。
次にユニティちゃんのInspectorにCapsuleColliderをつけた剣をCapsuleColliderの空欄に入れてください。
さて、無事に左クリックで剣を振れたでしょうか?
■剣が当たったらのけぞる役を作る
最後にユニティちゃんが振るう剣に触れたらのけぞるユニティちゃんを作ります。
今回はThe Woman WarriorのIdle1とHitのアニメーションクリップをその順番でAnimatorControllerに入れ、Transitionを互いにつけます。
構造は先ほどのAttack1を使ったAnimatorControllerとほぼ変わりません。
Parametersも先ほどとは名称が違うだけです。
Transitionの設定も同じようにして欲しいのですが、違うのはHit→Idle1のものはHas Exit Timeを外さないことです。
それはアニメーションを最後まで流してから遷移するというもので、ダメージを受けた様子は最後まで流します。
しかし、アニメーションイベントでアニメーションが終わってから遷移するようにするので結果は外しても結果は変わりませんでした。
すいません、これはどちらでも良いです(汗)
できたら新しいユニティちゃんにセットをします。
今回もApply Root Motionは外してください。
アニメーションイベントはDamageEndの1つだけ作りましょう。
Damageのアニメーションが終わったら待機状態に戻るようにするためです。
さて、スクリプトを書きましょう。
スクリプトでCapsuleColliderとRigidbodyを入れました。
これがないと剣のColliderに反応しません。
今回はタグを設定していませんが、剣にタグを設定しておけばそれに触れた時だけダメージを受けるようにできます。
さて、書けたら斬られ役のユニティちゃんにセットし、剣が届く位置に並べてください。
そうするとこのようになります。
斬られる前に相手がリアクションしてしまうように見えますが、とりあえず剣で相手にダメージを与えることができました。
今回はこれで終わりです。
■関連記事
【UnityC#講座】ユニティちゃんでもっとAnimator Controllerを上手く使いたい
【UnityC#講座】ユニティちゃんの表情を替える【SetLayerWeight】
【UnityC#講座】AnimatorControllerの使い方
この作品はユニティちゃんライセンス条項の元に提供されています
スポンサーリンク