C#XNA矩形碰撞检测从哪一侧

时间:2015-04-20 16:50:21

标签: c# xna collision

我有一个玩家矩形和一个墙矩形。我试图确定玩家从哪一侧撞墙。

例如,如果玩家从左侧撞到墙壁,则玩家不能继续穿过墙壁,但可以向上,向下或向右移动。

如何确定玩家从哪一侧撞墙?

1 个答案:

答案 0 :(得分:0)

在更新玩家的位置和矩形之前,请保留旧矩形的记录,以便将其与新位置进行比较。例如:

// Keep a record of old rectangle
Rectangle oldPos = player.Rectangle;

// Update player position and rectangle here

// Check for collision
if (player.Rectangle.Intersects(wallRect))
{
    // Player has hit the wall. Now to find out which direction it has come from

    if (oldRect.Center.X < wallRect.Center.X)
    {
        // Player came from left of wall
    }
    else
    {
        // Player came from right of wall
    }
}

尝试使用此模板并将游戏逻辑运用到其中。