現在、XNA でプラットフォーム ゲームを作成しています。私のコリジョン テストは現在、foreach ループを実行して、すべてのタイルのバウンディング ボックスでプレーヤーのバウンディング ボックスをテストすることによって動作します。ただし、プレイヤーがブロックに触れていないかどうかをテストする方法がわかりません。
アレイを実行して、プレイヤーがブロックに触れていないかどうかをテストして、プレイヤーが空中にいるかどうかを確認するにはどうすればよいですか? ヘルプやアドバイスをいただければ幸いです。前もって感謝します!
///////////////////////////////////
私の衝突コードは
if (personRectangle.TouchTopOf(newRectangle))
{
onGround = true;
test = false;
test2 = true;
}
対応するブールテストは
public static bool TouchTopOf(this Rectangle r1, Rectangle r2)
{
return (r1.Bottom >= r2.Top - 1 &&
r1.Bottom <= r2.Top + (r2.Height / 2) &&
r1.Right >= r2.Left + (r2.Width / 5) &&
r1.Left <= r2.Right - (r2.Width / 5));
}
そして、このコードは、Game1.cs の更新で衝突をテストします。
foreach (CollisionTiles tile in map.CollisionTiles)
player.Collision(tile.Rectangle);
私のマップクラスのタイルのリストはどれですか
private List<CollisionTiles> collisionTiles = new List<CollisionTiles>();