C# 检查对象正下方的对象

C# 检查对象正下方的对象,c#,xna,C#,Xna,我正在尝试用XNA创建一个平台游戏。我不知道如何检测一个对象是否在“Character”对象之下,如果它不在对象之上,就可以将其向下移动。您应该使用BoundingBox来检测碰撞,并通过简单的位置比较来检查它是否在某个对象之下。那是2d,伙计,非常简单,就像纸一样 如果你的游戏是3D的,我的答案是一样的。你所说的概念叫做碰撞检测,基本上是任何游戏的核心 在XNA中处理碰撞检测的最简单方法之一是使用矩形。你的每一个实体(角色、物品、武器、硬币、敌人)都应该使用一个矩形作为命中框。让我们研究一个简

我正在尝试用XNA创建一个平台游戏。我不知道如何检测一个对象是否在“Character”对象之下,如果它不在对象之上,就可以将其向下移动。

您应该使用BoundingBox来检测碰撞,并通过简单的位置比较来检查它是否在某个对象之下。那是2d,伙计,非常简单,就像纸一样


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

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

在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
    }
}

当然,每次移动玩家时,都需要相应地设置命中框的位置。假设您将播放器向右移动5个像素,您还需要将hitbox向右移动5个像素。

您累了什么?这个概念被称为碰撞检测,谷歌有大量关于它的信息。我没有寻找碰撞检测,但我已经研究了stackoverflow,寻找与此相同的关键字。