我正在制作平台类型的游戏。我使用 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;
}