检查对象下的对象
本文关键字:对象 检查 | 更新日期: 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的,我的答案也是一样的。