我目前正在 XNA 中编写平台游戏。我的碰撞测试目前通过运行一个 foreach 循环来测试玩家的边界框与每个图块的边界框。但是,我不知道如何测试玩家是否没有接触任何方块。
我将如何遍历我的阵列并测试他们的玩家是否没有接触任何块,以便我可以检查他是否在半空中?任何帮助或建议将不胜感激。先感谢您!
////////////////////////////////
我的碰撞代码是
if (personRectangle.TouchTopOf(newRectangle))
{
onGround = true;
test = false;
test2 = true;
}
相应的布尔测试是
public static bool TouchTopOf(this Rectangle r1, Rectangle r2)
{
return (r1.Bottom >= r2.Top - 1 &&
r1.Bottom <= r2.Top + (r2.Height / 2) &&
r1.Right >= r2.Left + (r2.Width / 5) &&
r1.Left <= r2.Right - (r2.Width / 5));
}
这段代码在 Game1.cs 更新中测试了碰撞。
foreach (CollisionTiles tile in map.CollisionTiles)
player.Collision(tile.Rectangle);
这是我的地图类中的瓷砖列表
private List<CollisionTiles> collisionTiles = new List<CollisionTiles>();