我正在制作一个平台型的游戏。我使用rectangle类和平台让我的主要角色变成了一个矩形。平台在屏幕上不断向上移动,当我的角色与平台顶部碰撞时,我希望他以与平台相同的速度着陆和移动,否则,他应该会坠落。除了掉下来的那部分,我把所有的东西都准备好了。如果我打开下降,它永远不会停留在平台上,但如果我打开下降,它工作得很好。基本上,假设角色一直在下降,除非它落在平台上,然后它的y方向/速度应该更改为平台的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;
}发布于 2011-12-24 14:43:02
微软有一个Platformer sample,它有falling和collison in。这是一个值得学习的很好的例子,你不需要任何第三方物理引擎来为你做这件事。
https://stackoverflow.com/questions/8622931
复制相似问题