直接检查对象下的对象

时间:2013-06-12 18:01:18

标签: c# xna

我正在尝试用XNA创建一个平台游戏。我无法弄清楚如何检测一个对象是否在“Character”对象下面,如果它不在一个对象上面就能向下移动。

2 个答案:

答案 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游戏,我的答案是一样的。