立方体在团结中不会破坏?

时间:2018-05-21 17:57:39

标签: c# unity3d collision-detection

我正在玩一个玩家正在飞行的游戏(完整的刚体,碰撞器),我有一个附有以下脚本的立方体:

 using UnityEngine;
 using System.Collections;

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

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

3 个答案:

答案 0 :(得分:1)

如果此脚本附加到多维数据集,则无效。

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);
        }
    }
}

你可以让它发挥作用。

答案 1 :(得分:0)

尝试将盒子的对撞机设置为&#34; Trigger&#34;并使用此:

using UnityEngine;
using System.Collections;

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

答案 2 :(得分:0)

那么有很多因素。尝试其中一些选项:

  1. 首先检查碰撞对象。它必须有&#34; breakableBox&#34;名称
  2. 如果未选中触发器,OnCollisionEnter(Collision col)将起作用     如果选中了触发器,OnTriggerEnter(Collider col)将起作用。
  3. 确保您不使用transform移动对象,而是使用rigidbody.velocity。
  4. 尝试调试。如果函数在外面登录。如果显示日志,那么 验证是错误的。
  5. 只有这些来自我的想法。希望有所帮助