立方体不会在碰撞时摧毁统一?



我正在制作一个游戏,玩家正在驾驶飞机(全刚体,对撞机(,我有一个附加了以下脚本的立方体:

using UnityEngine;
using System.Collections;
public class collision : MonoBehaviour
{
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == "breakableBox")
{
Destroy(col.gameObject);
}
}
}

我想做的是,一旦飞机撞上立方体,立方体就会消失。相反,飞机只是从立方体上反弹,这真的很奇怪。基本上,立方体就像一个混凝土盒子,它不会移动或被破坏。我该如何解决这个问题?

如果此脚本附加到多维数据集,它将不起作用。

void OnCollisionEnter(Collision col)函数正在接收玩家的碰撞对象,因此它会检查玩家是否具有"breakableBox"名称并尝试将其销毁。

我认为,如果您将此脚本附加到您的播放器或将其更改为如下所示的内容:

using UnityEngine;
using System.Collections;
public class collision : MonoBehaviour
{
void OnCollisionEnter(Collision col)
{
if (col.gameObject.name == <player_Name>)
{
Destroy(this.gameObject);
}
}
}

你可以让它工作。

尝试将盒子的碰撞体设置为"触发器"并使用它:

using UnityEngine;
using System.Collections;
public class collision : MonoBehaviour
{
void OnTriggerEnter(Collider col)
{
if (col.gameObject.name == "breakableBox")
{
Destroy(col.gameObject);
}
}
}

嗯,这有很多因素。尝试以下一些选项:

  1. 首先检查碰撞的物体。它必须具有"可破解框"名称。
  2. OnCollisionEnter(Collision col( 工作,如果触发器未选中并且 OnTriggerEnter(Collider col( 在选中触发器时有效。
  3. 确保移动对象不是使用 transform,而是使用 rigidbody.velocity。
  4. 尝试在 if 函数之外调试日志。如果显示日志,则 验证是错误的。

只有这些来自我的脑海。希望对你有帮助

最新更新