壁に衝突してジグザグの研究
どうにもこうにも
案1 接触した際に対称との距離を取って衝突方向判定 同上
案4 法線方向から向きを判定して現在ベクトルを反転 衝突点の法線方向のうち、絶対値の大きい方を採用してみるものの、衝突判定が複数回走ってるようで謎 どうも、モノビヘイビアー>エネミーベースって形で継承を使ってるのが不味い臭い 継承を使うと、なぜか衝突判定が2回走る事になるので、Unityで継承は使わない方が良いかも
2回衝突回避コード
code:cs
private bool is_collide = false;
public void OnCollisionEnter2D(Collision2D other){
if(is_collide == true){ return; }
is_collide = true;
// something else
}
private void LateUpdate() {
this.is_collide = false;
}
案4の処理
code:cs
private bool is_collide = false;
public void OnCollisionEnter2D(Collision2D other){
if(is_collide == true){ return; }
is_collide = true;
if(other.gameObject.tag == "Nostalgia"){
if(other.contacts.Length > 0){
ContactPoint2D point = other.contacts0; var current = this.currentVect;
if(Mathf.Abs(point.normal.x) > Mathf.Abs(point.normal.y)){
current.x *= -1;
}else{
current.y *= -1;
}
this._rig.velocity = current;
this.currentVect = current;
}
}
}
private void LateUpdate() {
this.is_collide = false;
}