Unity2019.2.2f1
Windows10
□
【UnityC#講座】3D人型モデルを三人称視点で動かす操作を改良
これらの記事の続きです。
今回は自分で操作するユニティちゃんとNavMeshAgentで動くユニティちゃんが互いにパンチし合うようにします。
より具体的に言うとNavMeshAgentの方は殴られると動き出してプレイヤーを追いかけてColliderに接触したら攻撃し、追いかける時間が決められただけ経つとスタート地点に戻るようにしました。
ユニティちゃん同士の殴り合い。
一定時間経つとNavMeshAgentで動く方はスタート地点に戻ります。#unity pic.twitter.com/YQWXL19WVt— イシゲー@UnityとBlender (@ishidahanta) November 20, 2019
■ユニティちゃんをコピーする
Duplicateする
前回作ったユニティちゃんをHierarchyで右クリック、Duplicateでコピーして敵にします。
Tagを2つ替える
その際、気を付けないといけないのはコピーユニティちゃんとそのAttackPointのTagを直すことです。
コピーユニティちゃんのTagをUntaggedにします。
コピーユニティちゃんのAttackPointをEnemyAttackにします。
簡単に階層が下のオブジェクトにアクセスするにはHierarchyの検索欄を使います。
あるいはInspectorからPlayerスクリプトに入っているAttackPointをクリックすると簡単にアクセスできます。
Playerスクリプトを外す
そしてコピーの方のPlayerスクリプトを外します。
右上の歯車マークをクリックし、Remove Componentを選んでください。
それを残しておくとアニメーションイベント絡みのエラーが出ます。
別に機能に問題はないですが鬱陶しいので消しておきましょう。
参考
【Unity】SetBoolでNull???【エラー】
■NavigationウィンドウでBakeする
Navigation Static
次はNavMeshAgentを動かすための土台を作ります。
まずはPlanないしはユニティちゃんが移動する床のオブジェクトをNavigation Staticにしましょう。
Inspectorからの右上にあるStaticをクリックし、Navigation Staticを選択します。
Navigationウィンドウ
次はNavigationウィンドウを出します。
画面上部のメニューバーのWindowから選択します。
Window > AI > Navigation
Bake
次はNavigationウィンドウでBakeします。
Navigation > Bakeタブ > Bakeボタン
するとSceneビューのNavigation Staticにしたオブジェクトに青い面ができますが、それがNavMeshAgentが移動できる範囲です。
そのオブジェクトを移動したり、形を変えたりするとBakeし直さなければなりません。
スポンサーリンク
■スクリプトを設定する
最後はスクリプトを設定して終わりです。
列挙型(Enum)のWateが待機モード。
プレイヤーのAttackPointオブジェクトに触れるとChaseになりプレイヤーを追跡します。
そしてプレイヤーのColliderに触れると攻撃し、決められた時間が経つとReturnになりスタート地点に戻ります。
コピーしたユニティちゃんにスクリプトをアタッチしたら、InspectorからAttackPointを入れてください。
これで終わりですがちゃんと動いたでしょうか?
■関連記事
【UnityC#講座】ユニティちゃんにキソラちゃんがついてくるようにする【NavMeshAgent、Blend Tree】
【UnityC#講座】ユニティちゃんたちをドラクエっぽく一列に移動や順番変更させる【List、for文、NavMeshAgent】
【UnityC#講座】近づいたら追いかけてくる巡回ユニティちゃん【NavMeshAgent】
【UnityC#講座】見つけたら追いかけてくる監視ユニティちゃん【NavMeshAgent】
【UnityC#講座】ユニティちゃんをモブキャラのごとくランダム移動させる【NavMeshAgent】
この作品はユニティちゃんライセンス条項の元に提供されています
スポンサーリンク