1

我在 Unity3d 中的 onCollisionEnter 函数有问题。问题是我有一个第三人称控制器,如果与边界对象碰撞应该激活另一个游戏对象和标签。

这就是我给出我的代码的方式

function OnCollisionEnter(collision : Collision)
{
   if(collision.gameobject1.tag=="tag1")
   {
     // activate game object and label
   }
   if(collision.gameobject2.tag=="tag2")
   {
      // deactivate game object and label
   }
}

问题是它进入了两个循环,我不知道我给出的内容是错误的还是我给出的方式。我哪里错了?

4

2 回答 2

3

如果 OnCollisionEnter 事件正在触发(您可以添加打印以确保),则需要检查两件事:标签和碰撞器

标签

尝试

collision.transform.tag

还要验证您是否为游戏对象选择了正确的标签。

对撞机

在 Unity3D 中,碰撞回调(onCollisionEnter 等)仅在某些情况下发生。例如:具有碰撞器和刚体组件的游戏对象 (gameobject1) 将与仅具有碰撞器的静态(不移动)游戏对象 (gameobject2) 发生碰撞。

我会看一下Box Collider Reference,因为底部是一个碰撞动作矩阵,它解释了在什么条件下发生碰撞。

于 2012-01-11T13:13:38.707 回答
0

请将标签添加到 Unity。也许您不向对象添加标签。请将tag1和添加tag2到您的标签,选择您的对象,然后选择tag1tag2

在此处输入图像描述

于 2015-09-04T01:49:56.430 回答