プラットフォームタイプのゲームを作っています。Rectangleクラスとプラットフォームを使用して、メインキャラクターを長方形にしました。プラットフォームは常に画面上を上に移動しており、キャラクターがプラットフォームの上部に衝突したときに、プラットフォームと同じ速度で着地して移動するようにします。そうしないと、落下するはずです。落下部分を除いて、すべてが機能しました。落下をオンにすると、プラットフォームに留まることはありませんが、落下をオンにすると、正常に動作します。基本的に、キャラクターはプラットフォームに着地しない限りずっと落下していると想定されており、その場合、そのy方向/速度はプラットフォームの方向/速度に変わるはずです。
これがコードのその部分です。プラットフォームと衝突しないときにキャラクターを落下させる方法についてのヘルプは素晴らしいでしょう。私が知りたいより良い方法があれば、私がしていることがこれを行うための最も効率的な方法ではないかもしれないことを私は知っています。私はxnaを初めて使用しますが、java / c#を知っています。
Rectangle playerRec = new Rectangle((int)player.position.X, (int)player.position.Y,player.width, player.height);
foreach (Platforms platform in platforms)
{
Rectangle platformRec = new Rectangle((int)platform.position.X, (int)platform.position.Y, platform.width, platform.height);
if ((playerRec.Intersects(platformRec) && (playerRec.Y + playerRec.Height) - platformSpeed < platformRec.Y) &&
(playerRec.X < platformRec.X + platformRec.Width && playerRec.X + playerRec.Width > platformRec.X))
{
gravity = 0;
player.position.Y -= platformSpeed;
}
else if(player.position.Y != platform.position.Y)
{
gravity = 5;
//player.position.Y += gravity;
}