我有一个看起来像这样的函数:
private void OnCollisionEnter2D(Collision2D collision)
{
if (collision.gameObject.name == "Despawner")
{
Destroy(this.gameObject);
}
if (collision.gameObject.name == "Char")
{
Destroy(this.gameObject);
ScoreHandler.coinsCollected++;
}
}
基本上,我想要的是如果硬币与玩家发生碰撞,我希望移除硬币,而且还希望消除碰撞的物理影响,所以如果我从下面跳到硬币上,我的角色不会跌倒在地上,它越过它并像将其收集一样将其移除。
我还尝试将OnCollisionEnter2D
更改为OnTriggerEnter2D
,但没有成功。
编辑:我从OnTriggerEnter2D
更改为OnCollisionEnter2D
。现在,角色穿过硬币但不捡硬币,就像根本没有碰撞一样,还检查了编辑器中的IsTrigger
GameObject
。
答案 0 :(得分:0)
您应该能够检测到碰撞并忽略它。我对弹丸做了类似的处理,有时会相互重叠并弹起。
private void OnCollisionEnter2D(Collision2D collision) // or OnCollisionStay2D
{
Physics2D.IgnoreCollision (this.gameObject.GetComponent<Collider2D> (), collision.gameObject.GetComponent<Collider2D> ());
Destroy(this.gameObject);
ScoreHandler.coinsCollected++;
}
答案 1 :(得分:0)
我必须使用触发器,而不是碰撞及其工作。
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.name == "Despawner")
{
Destroy(this.gameObject);
}
if (collision.gameObject.name == "Char")
{
Destroy(this.gameObject);
ScoreHandler.coinsCollected++;
}
}