public void OnTriggerEnter2D(Collider2D col)
{
if(col.tag == "PowerUp")
{
Debug.Log("You've got a ");
}
我有一个球和一个加电装置,我希望球碰到加电装置并基本上通过碰撞来激活,但这是行不通的。 我为播放器添加了刚体,并为播放器和加电装置添加了碰撞。
答案 0 :(得分:1)
假设您正在谈论Unity中的2D碰撞触发器,则需要满足以下两个条件:
Collider2D
组件(例如BoxCollider2D
)。Rigidbody2D
组件。Collider2D
配置为触发器。此后,将在所有“碰撞”的相关对象上调用OnTriggerEnter2D()
方法。
根据您的描述,您似乎只需要在检查器中将Is Trigger
属性设置为true
:
根据您的游戏设计,将Power-Ups配置为(仅)触发器以使玩家保持常规对撞机可能是有益的;这将使玩家仍能与环境进行物理交互,同时能够触发感兴趣的对象。
换句话说,您可能还想交换标签比较代码
if (col.tag == "PowerUp")
通过CompareTag()
调用,如下所示:
if (col.CompareTag("PowerUp"))
原因有点技术问题,但简短的版本是它速度更快,从长远来看可以使您从内存相关的问题中解脱出来,如果该标签没有,您将在控制台中收到特定于Unity的错误存在。