我做了一个简单的2D游戏,玩家必须跳起来。我用Tilemaps创建了一个地图。对于一个跳跃的球员,他必须触地。例:
void OnCollisionEnter2D(Collision2D other)
{
if(other.transform.tag == "Ground")
{
IsGrounded = true;
}
}
现在一个小问题:如果玩家甚至从底部,碰撞器的左侧或右侧接触,那么isGround变为真,玩家可以从墙上跳下。我怎么能禁用它?
有很多方法可以实现这一目标。我会这样做是挖掘Collision2D对象。从中你可以使用other.contacts
得到一个ContactPoint2D数组,它可以告诉你碰撞的表面方向。
就像是:
void OnCollisionEnter2D(Collision2D other)
{
if(other.transform.tag == "Ground" && other.contacts[0].normal == Vector2.up)
{
IsGrounded = true;
}
}
other.contacts[0].normal == Vector2.up
正在检查第一次接触的“正常”方向,并将其与世界“向上”向量进行比较。