我一直在尝试找出如何检测碰撞以构成一个简单的战斗系统,但是这些命令并没有返回我想要的东西。我现在正在使用的(在统一引擎中):
using UnityEngine;
public class swordDetect : MonoBehaviour
{
void OnCollisionEnter(UnityEngine.Collision CollisionInfo)
{
if (CollisionInfo.gameObject.name == "swordCollide")
{
Debug.Log("it work again");
}
}
}
这没有返回任何东西,它附着在我一直用来测试它的一块岩石上。
swordCollide
对象附着在玩家的剑上,但是当它与岩石碰撞时什么也没有发生。
答案 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
两者都很容易理解,并附带一些示例代码