如何在不移动的对象上使用 OnTriggerEnter()?

问题描述 投票:0回答:2

我是游戏开发新手,我正在 Unity 中制作我的第一款游戏,这是一款自上而下的 2D 生存类型游戏。为了检测玩家何时击中树或其他世界对象,我在玩家的每一侧添加了不可见的触发器,每当您单击时我都会将其设置为活动状态。每当玩家或目标移动时,该系统都会完美运行,但是,当目标不移动(例如树)时,不会检测到碰撞。我认为 OnTriggerEnter 函数仅在移动物体与触发器碰撞时才起作用,但是,我不知道如何执行其他操作。我可以使用其他功能,或者可以通过某种方式解决这个问题吗?

void OnTriggerEnter2D(Collider2D other)
    {
        Debug.Log("hit");

        if (other.gameObject.tag == "Tree")
        {
            Debug.Log("hit tree");
            other.gameObject.GetComponent<TreeScript>().treeHealth--;
        }
    }
unity-game-engine triggers 2d collision-detection
2个回答
0
投票

在此处输入图像描述对于仍然找到解决方案的人,在 Rigidbody 和 Rigidbody 2D 中,在睡眠模式下,将其更改为 Never Sleep,这将帮助 Rigidbody 不会自动睡眠并且不会从触发器获取事件。


-1
投票

您可以尝试:

private void OnCollisionEnter2D(Collision2D col)
{

}

如果两个对象在没有使用“触发”选项的情况下相互碰撞,则会调用

OnCollisionEnter2D

使用两种不同方法的快速示例如下:

  • 在赛车游戏中使用

    OnTriggerEnter2D()
    方法,您想要检测汽车何时通过终点线,并且想要使用触发器,因为您实际上并不关心碰撞。

  • 使用

    OnCollisionEnter2D
    方法检测 2 辆车何时相互碰撞并且您不希望 2 个物体相互穿过。

© www.soinside.com 2019 - 2024. All rights reserved.