一夫一妻制中的简单2d碰撞(使用xna管道)
本文关键字:使用 xna 管道 碰撞 简单 2d 一夫一妻制 | 更新日期: 2024-09-27 07:42:26
我刚刚开始学习一夫一妻制,我正在使用XNA管道(搜索RBWhitiker)创建一个2d平台生成器,但当我试图让我的玩家跳上平台时,我陷入了困境。
我的球员可以跑过跳台,这是我所期望的。
问题是,当玩家跳上平台时,当他穿过平台的同一个x坐标时,他有点"锁定"在最后一个y位置,因此只是漂浮在平台上方的半空中。
另一个问题是,当玩家在平台上时,他们也不能跳跃。
希望这听起来不太令人困惑,但任何帮助都将不胜感激!
Player.cs-跳转的代码
if (Keyboard.GetState().IsKeyDown(Keys.Up) && isJumping == false)
{
position.Y -= 30;
velocity.Y = -7f;
isJumping = true;
isOnFloor = false;
}
if (isJumping == true)
{
velocity.Y += 0.4f;
}
if (position.Y >= 480)
{
isJumping = false;
isOnFloor = true;
}
if (position.Y < 480)
{
isOnFloor = false;
}
if (isJumping == false)
{
velocity.Y = 0f;
}
Game.cs-HandleCollisions函数,在Update()中调用
private void HandleCollisions()
{
if (myPlayer.boundingBox.Intersects(myPlatform.boundingBox))
{
myPlayer.velocity.Y = 0f;
myPlayer.isOnFloor = false;
}
}
https://www.youtube.com/watch?v=4Qks0VNpHCQ
这里有一段视频可以更好地说明我的问题。几点:
我知道,这些图像来自broforce,这只是一个样本精灵,稍后会更改
在角色仍然漂浮在平台上方的最后,我按下了多次跳跃,但玩家没有跳过
已解决:问题不是碰撞,而是if语句内部发生了什么:)