monogame 中的简单 2d 碰撞(使用 xna 管道)
simple 2d collision in monogame (using xna pipeline)
我刚开始学习 monogame,我正在使用 XNA 管道(搜索 RBWhitiker)来创建一个 2d 平台游戏,但是当我试图让我的玩家跳上平台时我遇到了困难。
我的玩家可以 运行 越过平台并跳跃,这是我想要的。
问题是,当玩家跳上平台时,他有点 "locks" 进入了他进入平台相同 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 语句中发生的事情:)
我刚开始学习 monogame,我正在使用 XNA 管道(搜索 RBWhitiker)来创建一个 2d 平台游戏,但是当我试图让我的玩家跳上平台时我遇到了困难。
我的玩家可以 运行 越过平台并跳跃,这是我想要的。
问题是,当玩家跳上平台时,他有点 "locks" 进入了他进入平台相同 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 语句中发生的事情:)