如何在发生碰撞时更改按钮

时间:2018-11-08 13:35:31

标签: c# unity3d sprite

嘿,我试图将我的精灵按钮从绿色变为红色,然后当播放器与之碰撞时向后退。我有一个boxcollider2d触发器,一个脚本

脚本:https://gyazo.com/ec64a2bca5b23526c6949bf18cb50a0d

我想是其中的一部分,但是与按钮碰撞时我什么也没得到,任何人都可以启发我解决这个问题。

预先感谢

1 个答案:

答案 0 :(得分:3)

重要的是要区分碰撞器和触发器之间的区别。

物理系统使用对撞机,以使对象不会相互穿透或重叠。另一方面,会进行触发,以便您可以检查是否有重叠区域,例如“音速环”。索尼克收集了戒指,但它们并没有阻止他过去,可以将其视为触发因素。如果它们是对撞机,那么声音会跳入其中并反弹。

在Unity中,创建触发器的过程与创建对撞机的过程相同,仅需增加一个步骤,即标记一个复选框。

因此,了解每种情况下应使用的功能也很重要。

OnCollision ...对于碰撞器,(或未标记为触发器的碰撞器)

OnTrigger ...(用于触发器),(将碰撞器统一标记为触发器会使其成为触发器。)

要添加更多细节,对于正确的游戏尺寸使用正确的碰撞器类型也很重要,因此2d碰撞器/触发器不会与3d碰撞器/触发器进行交互。物理成分更多:2d刚体不适用于3d碰撞器,而3d刚体不适用于2d碰撞器/触发。

因此,每个2d,3d,碰撞和触发都有功能。

另一个重要因素是要确保是否要使用这些功能,至少其中一个对象必须具有正确类型(2d或3d)的刚体。

因此,您遇到的问题是将OnCollisionEnter2D用于标记为触发器的“对撞机”,在这种情况下,不会调用OnCollisionEnter2D,而是会调用OnTriggerEnter2D。