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

这里有一段视频可以更好地说明我的问题。 几点:

已解决:原来问题不是碰撞,而是 if 语句中发生的事情:)