如何仅一次检测Unity 3D的碰撞?

时间:2018-12-11 16:18:21

标签: c# unity3d

我让脚本在播放器与墙碰撞时实例化一个浮动文本,问题在于,由于播放器与墙碰撞并在退出前保持碰撞一段时间,因此实例化了多个文本。有什么方法只能检测一次碰撞吗?

脚本:

private void OnCollisionEnter(Collision collision){

    if(collision.gameObject.CompareTag("Wall")){

        if(WallFloatingText){
            ShowWallFloatingText();
            count = count + 3;
            countText.text = count.ToString();
        }
    }
}

1 个答案:

答案 0 :(得分:2)

我建议创建一个标记来检测墙壁是否已被击中。

private bool collisonOccured = false;
private void OnCollisionEnter(Collision collision){
    if(collisonOccured)
        return;
    if(collision.gameObject.CompareTag("Wall")){
        if(WallFloatingText){
            ShowWallFloatingText();
            count = count + 3;
            countText.text = count.ToString();
            collisonOccured = true;
        }
    }
}

别忘了关闭标志