unity3d 为什么没有检测到我的void CollisioEnter/TriggerEnter

oxalkeyp  于 2022-11-16  发布在  其他
关注(0)|答案(1)|浏览(155)

因此,我最近完成了一个教程,关于如何使第三人称摄像头视图,我想使用该项目检测任何冲突发生的球员通过写下面这行代码:

using UnityEngine;

public class CheckCollide : MonoBehaviour
{
    void OnTriggerEnter(Collider other)
    {
        if (other.gameObject.tag == "Gem") //Im making sure if the player hit the object with the tag"Gem"
        {
            Destroy(other.gameObject);//I want to destroy the gem after collide with the player
        }
    }
    
    void Update()
    {

    }

}

但遗憾的是,它似乎没有工作,**那么我如何才能检测到他们之间的碰撞?**非常感谢阅读到这里!祝你有一个美好的一天善良的随机家伙!^^

仅供参考:

我把玩家放在一个父游戏对象里面,Gem也是如此,如下图所示:

xzv2uavs

xzv2uavs1#

以下是如何确保设置正确的碰撞。
首先,您的Player或Gem对象需要组件Rigidbody。如果您不希望刚体影响对象,请将运动学设置为true和/或冻结约束。
接下来,你的两个对象(Player和Gem)都需要某种碰撞器。我推荐Box Collider。在Box Collider中的一个上,勾选IsTrigger。这样你的一个对象就可以用作触发器。我建议让你的Gem对象成为触发器。
如果这些都不起作用,请仔细检查脚本中的标记是否正确,以及Gem对象是否为自身设置了正确的标记。

相关问题