Playerに大きいSphereを追加して、そのSphereに触れたら動くようにした。
敵の動きは
前進→止まる→playerに狙いを定める→前進→loop
---------------------------------------------------------------------------------
var round = 0;
var jumpCnt = 0;
var lookPos = 0;
function Start(){
jumpCnt = 1;
}
function Update () {
if(round == 1){ //敵動くフラグ(playerのSphereに触れてたら~)
if(jumpCnt == 1){ //行動アクション実行のフラグ
enemyJmp(); //行動アクション(enemyJmp)へ移動
}
if(lookPos == 1){ //停止中
transform.LookAt(Vector3(target.position.x,0,target.position.z));//playerに狙いを定める。
}
}
function OnTriggerStay(col : Collider){ //playerがいたら動き出すための当たり判定
if(col.gameObject.tag == ("playerFld")){
round = 1;
}
}
function enemyJmp(){
jumpCnt = 0;
rigidbody.velocity = transform.forward * 5;//前進ジャンプ
yield WaitForSeconds(0.5);
lookPos = 1;
rigidbody.velocity = transform.forward * 0;//停止
yield WaitForSeconds(2.0);
jumpCnt = 1;
lookPos = 0;
}
---------------------------------------------------------------------------------
毎回変数の名前が決まらなくて適当になる。
何でも良いんだけど、自分で見て”なんだこれ?”になる事がしばしば。
↑のスクリプトでは
round がplayerが近くにいるか確認フラグで
jumpCnt がUpdateから行動アクションへのフラグで行動が始まったら0(off)にして、行動が終わったら1(on)を返すようにしてる。
lookPos は行動アクション中に立ち止まってる間Update内でplayerのほうを向くようにするためのフラグ。。。
変数に1と0を代入してon/off切り替えるやり方は正しいのだろうか・・・。
もっと良い方法がありそう。




