我制作了一个简单的2D游戏,玩家必须跳起来。我使用Tilemaps创建地图。要让运动员跳起来,他必须触地。 示例:
void OnCollisionEnter2D(Collision2D other)
{
if(other.transform.tag == "Ground")
{
IsGrounded = true;
}
}
现在是一个小问题:如果玩家甚至从底部,对撞机的左侧或右侧触摸,isGround就会变为真,并且玩家可以从墙壁上跳下来。如何禁用此功能?
答案 0 :(得分:0)
有很多方法可以完成此任务。我要做的方法是挖掘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
正在检查第一次接触的“正常”方向,并将其与世界“向上”矢量进行比较。