我正在完成Unity教程,目前正在进行名为“太空射击”的教程。发生了一些可疑的事情。
我注意到,当游戏开始运行时,Boundary对象和小行星对象都会消失。注意,两者都有碰撞器,它们没有碰触。它们是一个名为“DestroyByContact”的脚本,它在玩家射击时基本上会破坏游戏对象。
using UnityEngine;
using System.Collections;
public class DestroyByBoundary : MonoBehaviour
{
void OnTriggerEnter(Collider other)
{
if (other.tag == "Boundary")
{
return;
}
Destroy(other.gameObject);
Destroy(gameObject);
}
}
我发现当我从我的Asteroid gameObject中删除这个脚本时,游戏功能正常,对象被删除。他们的脚本一定是错的,但我找不到出了什么问题。
编辑:我忘了将Boundary对象放在Unity中的“Boundary”标签上。这解决了这个问题。答案 0 :(得分:1)
您很可能没有设置或拼错边界标记Boundary
1 。请参阅This point in the tutorial video。
这导致您的if (other.tag == "Boundary")
为false,因此它不会进入if
块以提前退出该功能。
PS :如果您使用的是Unity 5,现在应该使用if (other.CompareTag("Boundary"))
,当编写太空射击游戏教程并且它所谓的比进行other.tag == "Boundary"
比较具有更好的性能。您可以在Unity 5中看到使用in the Roll-A-Ball tutorial的示例.Loll-A-Ball教程还提供了在Unity 5 UI中添加新自定义标记的示例。
1:具有讽刺意味的是,当我第一次发布这个答案时,我拼错了Boundary
。