在Unity中识别特定的对象冲突

时间:2019-01-19 00:35:35

标签: unity3d

我一直在尝试找出如何检测碰撞以构成一个简单的战斗系统,但是这些命令并没有返回我想要的东西。我现在正在使用的(在统一引擎中):

using UnityEngine;

public class swordDetect : MonoBehaviour
{
    void OnCollisionEnter(UnityEngine.Collision CollisionInfo)
    {
        if (CollisionInfo.gameObject.name == "swordCollide")
        {
            Debug.Log("it work again");
        }
    }
}

这没有返回任何东西,它附着在我一直用来测试它的一块岩石上。

swordCollide对象附着在玩家的剑上,但是当它与岩石碰撞时什么也没有发生。

1 个答案:

答案 0 :(得分:0)

确保您的Gameobject上有一个碰撞器,该碰撞器未设置为Trigger(因为它不能接收碰撞,而只会触发)。我总是宁愿标记我的Gameobjects并检查标记而不是名称,因为它不容易出错。如果碰撞的Gameobject是触发器,则需要检查

private void OnTriggerEnter(Collider other){}

最好观看有关碰撞https://unity3d.com/learn/tutorials/topics/physics/colliders?playlist=17120的Unity教程 并查看文档https://docs.unity3d.com/ScriptReference/Collider.html

两者都很容易理解,并附带一些示例代码