タワーディフェンスの基本的な動き。
最初の頃は、壁にぶつかったら”回転”みたいな事をやっていたけど、SendMessageを覚えてからこっちを使ってる。
・mobは指定された順路(target)を辿ってゴールにたどり着く。
//mob側のスクリプト
------------------------------------------------------------------
var speed = 2;
var nVec : Vector3;
function Start () {
nVec.y = this.transform.position.y;
}
function Update () {
rigidbody.velocity = transform.forward * speed;
}
function nextEvent(a:GameObject){
nVec.x = a.transform.position.x;
nVec.z = a.transform.position.z;
transform.LookAt(nVec);
}
------------------------------------------------------------------
Rigidbodyを付けるのを忘れずに、さらにUse Gravityのチェックを外す。"mob"というタグを付けておく。
nVecがtargetの位置。
nextEventで次のtargetを指定。
nextEventに次のtargetを送らなければいけない。
//target側のスクリプト。
-----------------------------------------------------------------
var target : GameObject;
function OnTriggerEnter(col : Collider){
if(col.gameObject.tag == "mob"){
col.SendMessage("nextEvent",target);
}
}
------------------------------------------------------------------
targetはHierarchy→Create→SphereなどでCollider(Is Trigger)の付いたオブジェクトを。
そのオブジェクトのインスペクターに次のtargetを入れておく。
mobが当たったら次のtargetをmobに送信。
次のtargetを幾つか準備しておいてランダムで変えるのも手。
一番最初のtargetはmobが出現する位置に。
慣れれば超簡単。でもtargetをインスペクターに入れていく作業が面倒。
次のtargetを複数用意してラムダムに…ってやったら、コピペしたtargetは名前が一緒なのでどれがどれだかw