ゲームのプラットフォームタイプを作っています。 Rectangleクラスとプラットフォームを使用して、私の主人公を長方形にしました。プラットホームは画面上で常に上向きに動いていて、キャラクターがプラットホームの上に衝突すると、彼はプラットホームと同じ速度で着陸し、動かさなければなりません。私は落ちる部分を除いてすべてを働かせました。私が落下を止めれば、それはプラットフォーム上にとどまることはありませんが、転倒するとうまくいきます。基本的にキャラクターは、プラットフォーム上に着地しない限り、全時間落ちていると仮定し、そのy方向/速度はプラットフォームの速度に変えなければなりません。xnaの落下と衝突
ここにコードの一部がありますが、プラットフォームと衝突しないときに文字を落とさせる方法についてのヘルプは素晴らしいでしょう。私が知りたいと思うよりよい方法があれば、私がしていることがこれを行う最も効果的な方法ではないかもしれないことは分かっています。私は、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;
}
ありがとうございます!私はそれを逃したとは信じられません。私はループを修復し、すべてを修正しました。私は物理エンジンを使うつもりでしたが、これは非常に単純なゲームであり、実際にはもっと実用的です。 – user566417