【发布时间】:2013-02-27 17:15:56
【问题描述】:
我目前正在用 XNA 编写一个平台游戏。 我的碰撞测试目前通过运行一个 foreach 循环来测试玩家的边界框与每个图块的边界框。但是,我不知道如何测试玩家是否没有接触任何方块。
我将如何遍历我的阵列并测试他们的玩家是否没有接触任何方块,以便我可以检查他是否在半空中?任何帮助或建议将不胜感激。提前谢谢!
///////////////////////////////
我的碰撞码是
if (personRectangle.TouchTopOf(newRectangle))
{
onGround = true;
test = false;
test2 = true;
}
对应的bool测试是
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>();
【问题讨论】:
标签: c# foreach xna collision-detection