OnCollisionEnter2D错误或遗漏了一些代码

时间:2017-11-22 11:20:13

标签: c# unity3d

我对c#脚本和统一完全陌生......我正在尝试团结一致并创建了这个代码并且它很好但有时它只是重叠“墙”标记对象甚至离开我正在使用的那个圆圈边缘对撞机2D和我的射手对象上的多边形对撞机2D,这个脚本附加到射击对象。检查错误的屏幕截图。

void OnCollisionEnter2D (Collision2D collider){
    if (collider.gameObject.tag == "wall") {
        StartCoroutine (shooterscale());
        collider.gameObject.GetComponent<bgAnimater> ().animateBg ();
        if (turn) {

            turn = false;
        } 
        else {

            turn = true;
        }
    }
}

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:0)

我假设你在射手上使用Rigidbody2D

确保将碰撞检测模式设置为 连续 ,以避免物体相互穿过。

来自文档:

  

当碰撞检测设置为连续时,GameObjects会带有   刚体2Ds和碰撞体2D在期间不会相互穿过   更新。相反,Unity计算任何一个的第一个影响点   Collider 2Ds,并在那里移动GameObject。请注意,这需要   比Discrete更多的CPU时间。

  

将碰撞检测设置为离散时,游戏对象设置为   刚体2D和碰撞器2D可以重叠或相互穿过   在物理更新期间,如果它们移动得足够快。碰撞   联系人仅在新职位生成。

希望这有帮助