繁体   English   中英

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

[英]How to detect Collision only once Unity 3D?

我将脚本设置为在玩家与墙壁碰撞时实例化一个浮动文本,问题是由于玩家与墙壁碰撞并在退出前保持碰撞一段时间,因此实例化了多个文本。 有什么方法只能检测一次碰撞吗?

剧本:

private void OnCollisionEnter(Collision collision){

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

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

我建议创建一个标志来检测墙壁是否已被撞到。

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;
        }
    }
}

不要忘记关闭标志

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM