OnCollisionEnterが衝突した時の処理。
OnCollisionExitは衝突がなくなったらの処理・・・をするの
ですが、ある条件のときにExitが反応しないで泣いたので、
その対処法を書きたいと思います。
失敗例です
モンスターが歩いてきて、センサーに触れるとモンスターが
消える。で、メッセージが出るプログラムです。
すげえ簡略化してるので申し訳ないですが、うまく行かない
例です。
//モンスター側.cs
//2 フラグが立ったらモンスター消滅
Update(){
if(flag==1){
Destroy(gameObject);
}
}
//センサー側.cs
//変数は両側で読めることにしてくだせえ
public int flag=0;
//1 衝突したらフラグを立てる
OnCollisionEnter(){
flag=1;
}
//3 センサーに触れるものがいなくなったらメッセージ
OnCollisionExit(){
DebugLog("いなくなったよ!");
flag=0;
}
さて、これだと消えはするんですが。
メッセージが出てきません。また、フラグも戻りません。
なんででしょうか?
修正したもの
結局、デストロイしちゃうとOnCollision Exitが反応しな
いっぽいです。なので、一旦どっかに移動させてから消す
ようにしました。
//モンスター側.cs
//2 フラグが立ったらモンスター消滅
Update(){
if(flag==1){
transform.position=new Vector3(0,99,0);
Destroy(gameObject);
}
}
//センサー側.cs
//変数は両側で読めることにしてくだせえ
public int flag=0;
//1 衝突したらフラグを立てる
OnCollisionEnter(){
flag=1;
}
//3 センサーに触れるものがいなくなったらメッセージ
OnCollisionExit(){
DebugLog("いなくなったよ!");
flag=0;
}
こんな単純なことなんですが、かなり困惑しました。
今日も小ネタですいません。
それではよきプログラミングライフを!
またね。