XNA でプラットフォーム ゲームを作成しようとしています。オブジェクトが「キャラクター」オブジェクトの下にあるかどうかを検出して、オブジェクトの上にない場合に下に移動できるようにする方法がわかりません。
質問する
80 次
2 に答える
1
あなたが話している概念は衝突検出と呼ばれ、基本的にあらゆるゲームの核心です。
XNA で衝突検出を処理する最も簡単な方法の 1 つは、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
}
}
もちろん、プレイヤーを動かすたびに、それに応じてヒットボックスの位置を設定する必要があります。プレイヤーを 5 ピクセル右に移動すると、ヒットボックスも 5 ピクセル右に移動する必要があります。
于 2013-06-14T08:12:21.163 に答える
0
BoundingBox を使用して衝突を検出し、単純な位置を比較して、何かの下にあるかどうかを確認する必要があります。それは紙のように、非常に単純な 2 次元です...
ゲームが 3D の場合、私の答えは同じです。
于 2013-06-13T11:54:38.437 に答える