我有一个标记为"播放器"的立方体,需要在某些位置跳转,由Empty GameObjects表示。
我想建立一个点数系统,为什么我把其他游戏对象标记的地方放在一起" Coin"
立方体有一个动画,每当它移动到通过用鼠标点击识别的另一个点时播放 当我跳到硬币位置时,我希望硬币对象被摧毁。
我使用这个功能:
void OnTriggerEnter(Collider col){
if (col.gameObject.tag == "Coin") {
Debug.Log ("Plm");
stroy (col.gameObject);
}
问题在于,当我在Coin位置跳跃时,没有任何事情发生
我在两个对象上都有盒子对撞机,并且OnTrigger
都检查了它们。
答案 0 :(得分:2)
1)确保一个游戏对象有一个僵尸
要让OnTriggerEnter
发生,您需要两个对象中至少有一个附加RigidBody
。
2)静态触发器对撞机
一个对象已经检查过isTrigger
但没有被检查过但被认为是Static Trigger Collider
From Unity Documentation:
这是一个具有Collider但没有Rigidbody的GameObject。静态对撞机用于水平几何,它总是停留在同一个地方,永远不会四处移动。传入的刚体对象将与静态对撞机发生碰撞,但不会移动它。
这种类型的对撞机互动非常适合您的硬币,因为它们不会移动并保持静止。
3)Rigidbody Trigger Collider
下一种类型的对撞机互动是Rigidbody Trigger Collider
,它们是:
这是一个Game Collider,附有一个普通的,非运动的Rigidbody。刚体碰撞器由物理引擎完全模拟,可以对脚本施加的碰撞和力作出反应。它们可能会与其他物体碰撞(包括静态碰撞器)
这种类型的对撞机是您player
所需要的,正如它在Unity文档中所说的那样,它将能够与Static trigger collider
发生碰撞。
重要观察:
在您的玩家对撞机上将IsTrigger
设置为true会导致您的玩家不作为固体对象做出响应
配置为触发器的对撞机(使用Is Trigger属性)不会像固体对象那样运行,只会允许其他对撞机通过。
这对您来说可能不是最佳解决方案,因为大多数时候您希望您的玩家能够与地面等其他事物发生碰撞。因此,您可以将isTrigger
设置为false,并在您的播放器上设置一个刚体,如果它们设置为Static Trigger Collider
,它将对硬币作出反应。
如果您想要一种简单的方法来了解哪些内容可能会与Read the colliders documentation发生冲突,并查看此图表以更简单的方式显示它。