统一冲突不起作用,我的代码有什么问题



我试图在一个团结项目上跟踪collsion,但我没有发现问题这就是我正在使用的代码。我试图在碰撞时摧毁一个物体,但由于某种原因,它不起作用。

void OnCollisionEnter(Collision col)
{
if (col.collider.gameObject.tag == "Enemy")
{
Destroy(col.gameObject);
Debug.Log("collided");
}
}

它击中了物体,但什么也没发生我没有收到消息,物体也没有被摧毁

假设你发布的脚本是某种角色的组件(因为你正在使用它的标签寻找敌人,所以应该是这样(,并且你有适当的刚体组件和适当的设置和碰撞器,你应该使用:

void OnCollisionEnter(Collision col)
{
// You can also use col.gameObject.tag == "Enemy" since it does the same thing as CompareTag().
// Although using col.gameObject.tag == "Enemy" is less performant.
if (col.gameObject.CompareTag("Enemy"))
{
// Using print to get proper information on what is happening.
print("destroyed " + col.gameObject.name);
// Destroying the gameObject with the tag "Enemy"
Destroy(col.gameObject);
}
}

如果你想摧毁玩家对象,那么你应该相应地更改标签,并将这个脚本作为敌人的一个组成部分。

如果什么都没有显示,最常见的问题可能是:

  1. 对象没有RigidBody(或者RigidBody2D,如果你在2D项目中(组件

  2. 这两个物体在两个不与其他物体碰撞的层中(或者在同一层中不与自身碰撞(。检查两个对象的图层,然后转到"编辑"->项目设置->Physics(或Physics2D,如果项目是2D(,并在底部检查层是否相互碰撞(复选框打开(

  3. 两个对撞机中的一个在2D,另一个在3D

最新更新