我正在制作一个游戏,玩家正在驾驶飞机(全刚体,对撞机(,我有一个附加了以下脚本的立方体:
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);
}
}
}
嗯,这有很多因素。尝试以下一些选项:
- 首先检查碰撞的物体。它必须具有"可破解框"名称。
- OnCollisionEnter(Collision col( 工作,如果触发器未选中并且 OnTriggerEnter(Collider col( 在选中触发器时有效。
- 确保移动对象不是使用 transform,而是使用 rigidbody.velocity。
- 尝试在 if 函数之外调试日志。如果显示日志,则 验证是错误的。
只有这些来自我的脑海。希望对你有帮助