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



我是游戏开发的新手,我正在Unity制作我的第一款游戏,这是一款自上而下的2D生存型游戏。为了检测玩家何时击中树或其他世界对象,我在玩家的两侧添加了不可见的触发器,每当你点击时,我都会将其设置为活动状态。无论何时玩家或目标在移动,该系统都能完美工作,然而,当目标不移动时,就像树一样,碰撞不会被检测到。我认为OnTriggerEnter函数只有在移动对象与触发器碰撞时才起作用,然而,我不知道如何进行其他操作。有没有其他功能我可以使用,或者我可以通过某种方式解决这个问题?

void OnTriggerEnter2D(Collider2D other)
{
Debug.Log("hit");
if (other.gameObject.tag == "Tree")
{
Debug.Log("hit tree");
other.gameObject.GetComponent<TreeScript>().treeHealth--;
}
}

您可以尝试:

private void OnCollisionEnter2D(Collision2D col)
{
}

如果两个物体在不使用";触发器";选项,则会调用OnCollisionEnter2D

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

  • 在赛车游戏中使用OnTriggerEnter2D()方法,当你想检测汽车何时通过终点线时,你想使用触发器,因为你实际上并不关心碰撞。

  • 使用OnCollisionEnter2D方法检测两辆车何时发生碰撞,并且不希望两个物体相互穿过。

最新更新