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