检查对象下的对象

本文关键字:对象 检查 | 更新日期: 2023-09-27 18:18:00

我正在尝试使用XNA创造一款平台游戏。我不知道如何检测对象是否在"字符"对象下,如果它不在对象上方,则能够将其向下移动。

检查对象下的对象

你所说的概念叫做碰撞检测,基本上是任何游戏的核心。

在XNA中处理碰撞检测最简单的方法之一是使用矩形。你的每个实体(角色,道具,武器,货币,敌人)都应该使用矩形作为命中框。让我们学习一个简单的例子:
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个像素,那么你也需要将hitbox向右移动5个像素。

您应该使用BoundingBox来检测碰撞,并使用简单的位置比较来检查它是否"在"某些内容之下。这是2d,老兄,非常简单,就像纸一样…

如果你的游戏是3D的,我的答案也是一样的。