一夫一妻制中的简单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,这只是一个样本精灵,稍后会更改

  • 在角色仍然漂浮在平台上方的最后,我按下了多次跳跃,但玩家没有跳过

一夫一妻制中的简单2d碰撞(使用xna管道)

已解决:问题不是碰撞,而是if语句内部发生了什么:)