如何只检测一次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;
}
}
}

不要忘记关闭标志

最新更新