我正在尝试用 XNA 创建一个平台游戏。我不知道如何检测对象是否位于“字符”对象下方,以便在它不在对象上方时将其向下移动。
问问题
80 次
2 回答
1
你所说的概念叫做碰撞检测,基本上是任何游戏的核心。
在 XNA 中处理碰撞检测的最简单方法之一是使用 Rectangle。您的每个实体(角色、物品、武器、硬币、敌人)都应该使用 Rectangle 作为碰撞箱。让我们研究一个简单的例子:
class Player
{
public Rectangle hitBox = new Rectangle(0, 0, 10, 30);
...
}
class Coin
{
public Rectangle hitBox = new Rectangle(50, 50, 5, 5);
...
}
如您所见,这两个实体都有一个 Rectangle 用于碰撞检测(您也可以将其用于绘图,但我通常使用 Vector2)。
现在,如何检查是否有碰撞?这很简单:
class Game
{
Player player = new Player();
Coin coin = new Coin();
if (player.hitBox.Intersects(coin.hitBox))
{
// Do your stuff
}
}
当然,每次移动玩家时,都需要相应地设置 hitbox 的位置。假设您将玩家向右移动 5 个像素,您还需要将碰撞框向右移动 5 个像素。
于 2013-06-14T08:12:21.163 回答
0
您应该使用 BoundingBox 来检测碰撞,并比较简单的位置来检查它是否在“下方”某物。那是二维的,伙计,很简单,就像纸一样……
如果你的游戏是 3D 的,我的答案是一样的。
于 2013-06-13T11:54:38.437 回答