碰撞脚本不起作用?

On-collision script not working?

高级我想说如果这是一个简单的问题和一个简单的答案,我很抱歉,因为我刚刚进入 programming.Basically,我正在尝试创建一个脚本,一个块在与 FPSController 碰撞时命名为 blue(下图),将被破坏,这是我的脚本:

using UnityEngine;
using System.Collections;

public class Cube : MonoBehaviour {

    void OnCollisionEnter (Collision col) {

        if(col.gameObject.name == "Blue") {

            Destroy(col.gameObject);
            print ("collison detected");

        }

    }

}

但是,出于某种原因,每当 fps 控制器与称为 "Blue" 的对象发生碰撞时,没有任何反应,不会触发 print() 函数,也不会触发 destroy() 函数

谢谢你的进步;)

您的立方体中缺少刚体。

1。将 Rigidbody 组件附加到两个多维数据集。

2。此外,将两个立方体 Rigidbody 设置为 Is-kinematic。您必须将两个立方体 Rigidbody 设置为 Is-kinematic 以便角色控制器无法移动它。请注意,如果您的立方体在添加 Rigidbody 后掉落,只需在 Rigidbody.

上禁用 Use Graivty

重要:

3.删除FPSController。由于您将与其他 Rigidbody 个游戏对象进行交互,因此请使用 RigidBodyFPSController。它可以在 Assets\Standard Assets\Characters\FirstPersonCharacter\Prefabs 中找到。将 RigidBodyFPSController 拖到场景中,然后将 Cube 脚本附加到它。

您会注意到 RigidBodyFPSController 附加了一个 Rigidbody不要修改它的设置。

就是这样。一切都应该按预期工作。

Cube 设置:

RigidBodyFPSController 设置: