IshidaGames【UnityC#講座】ユニティちゃんにパンチさせるTweetnoteで管理人イシゲーのゲームの思い出記事を100円で公開しました。今回はこの記事の続きとしてユニティちゃんにパンチをさせます。次回は操作するユニティちゃんとNavMeshAgentで動くユニティちゃんで殴り合いをさせるのでその準備もします。■AnimatorControllerの設定をするアニメーションクリップ攻撃モーションとダメージモーションを追加します。ダメージモーションは今回使いませんが、次回使うのでついでに設定しておきます。ユニティちゃんのフォルダの中からPOSE30とDAMAGED00をアニメーションクリップを見つけてAnimatorControllerにドラッグしてください。DAMAGED00そうすると長方形のアイコン、StateができるのでInspectorから名前をAttackとDamageに替えます。Transitonをし、他のStateを左クリックすることでつなげます。画像のようにしてください。TreeはAttackとDamageの両方と互いにTransition(矢印付きの線)を張り、AttackからDamageは一方通行です。Parameters次はParametersを設定しましょう。AnimatorControllerの左上のParametersを選択、そして+ボタンをクリックし、Boolを選択します。それでまたAttackとDamageの2つを作ってください。次はTransitionの設定です。Transitionをクリックし、HasExitTimeのチェックを外し、Conditionsの設定をします。Conditionsの+ボタンを押し、それからそれぞれ以下のようにします。Treeから行くのがTrueで戻るのがFalseです。AttackからDamageに行くのは攻撃中に攻撃を受けた時のためです。■アニメーションイベントの設定をするアニメーションイベントはアニメーション中の特定のタイミングでメソッドを呼び出したりできる機能です。POSE30のアイコンをクリックし、InspectorからEdit、Eventsとたどり設定します。StateのMotion欄のPOSE30をクリックするとすぐにPOSE30にたどりつけます。Eventsという文字の下のアイコンをクリックし、出てきた棒をメソッドを呼びたい時間に置きますが、後で調整できるので適当でいいです。Functionの欄にAttackEndと入れてください。最後にApplyをクリックして完了です。Damageも同じように設定しDamageEndと入れてください。■攻撃判定のオブジェクトを設置する次は攻撃が相手に当たったことを判定するオブジェクトを設置します。これもパンチさせるだけならいらないのですが、次回の殴り合いのために作っておきましょう。空のオブジェクトを出し名前をAttackPointにします。Empty次はTagを設定します。InspectorのTagからPlayerAttackとEnemyAttackを作ります。++ボタンを押してTagの名前を付けてください。戻ってPlayerAttackを選びます。EnemyAttackは次回使います。次はそれをユニティちゃんの右手のアーマチュア(アニメーションするための骨組み)の子オブジェクトにします。Character1_RightHandちなみにCreate横の検索欄に名前をコピペすれば簡単にたどりつけます。次はAddComponentでSphereColliderを入れます。位置はXYZのPositionがすべて0で良いです。円の大きさ、Radiusは0.2にしましたが別に何でもいいです。IsTriggerにチェックを入れることを忘れないでください。スポンサーリンク■スクリプトを設定する最後はスクリプトを書いてアタッチし、そのInspectorを設定すれば出来上がりです。前回書いたPlayerスクリプトに追加します。列挙型(Enum)で移動、攻撃、ダメージの行動を分けるようにしました。OnTriggerEnterでEnemyAttackのTagに当たるとダメージモードに切り替わるようにしています。POSE30はアニメーションと言うよりも単なるポーズのようなのでInvokeで0.5秒後にAttackEndAnimメソッドを呼び攻撃モードを終えるようにしました。仕上げはユニティちゃんにスクリプトをアタッチしていなければし、そしてInspectorからAttackPointを設定して出来上がりです。2019今回はこれで終わります。コメントをキャンセルメールアドレスが公開されることはありません。コメントデータの処理方法の詳細はこちらをご覧ください。