我正在尝试用XNA创建一个平台游戏。我无法弄清楚如何检测一个对象是否在“Character”对象下面,如果它不在一个对象上面就能向下移动。
答案 0 :(得分:1)
您所谈论的概念称为碰撞检测,基本上是任何游戏的核心。
在XNA中处理碰撞检测的最简单方法之一是使用Rectangle。你的每个实体(角色,物品,武器,硬币,敌人)都应该使用矩形作为命中框。让我们研究一个简单的例子:
class Player
{
public Rectangle hitBox = new Rectangle(0, 0, 10, 30);
...
}
class Coin
{
public Rectangle hitBox = new Rectangle(50, 50, 5, 5);
...
}
正如您所看到的,两个实体都有一个矩形,用于碰撞检测(您也可以将它用于绘图,但我通常使用Vector2)。
现在,如何检查是否有碰撞?这很简单:
class Game
{
Player player = new Player();
Coin coin = new Coin();
if (player.hitBox.Intersects(coin.hitBox))
{
// Do your stuff
}
}
当然,每次移动播放器时,都需要相应地设置hitbox的位置。假设您将播放器向右移动5个像素,您还需要将命中框移动到右侧5个像素。
答案 1 :(得分:0)
你应该使用BoundingBox来检测碰撞,并且比较简单的位置以检查它是否在“某物”之下。那是2d,男人,很简单,就像纸......
如果您的游戏是3D游戏,我的答案是一样的。