首页 文章

如何在保持重力不变的同时自然跳跃?

提问于
浏览
0

我有引力和跳跃“工作” . 当你从平台上走下去时,你会慢慢下降,直到你再次与地板发生碰撞,但是玩家跳跃基本上是向上传送,而不是平稳增加然后降低高度 . 我已经尝试过将声明1和3/2和4逻辑地结合起来说玩家在接触地板时可以跳跃或者在他们走开时顺利跌落但我最终出现错误并且我的玩家从屏幕上消失了 . 我的最终目标是在平台上行走(匹配速度)时平稳跳跃和平稳下降 .

注意: gravity = 1vertSpeed = Infinity

private function checkFalling(newY):void
    {
        var hitFloor:Boolean = HitTest.complexHitTestObject(player, floor, 1);          

        if (hitFloor)
        {
            trace("Grounded");
            vertSpeed = Infinity;
        }

        if (!hitFloor)
        {
            trace("Floating");
            vertSpeed = 1;
            //newY += vertSpeed;
        }

        if (vertSpeed == Infinity)
        {
            if (zKeyPressed)
            {
                vertSpeed = jumpStart;
            }
        }

        if (vertSpeed != Infinity)
        {
            trace("pushing");
            vertSpeed += gravity;
            newY += vertSpeed;
        }

        player.y = newY;
    }

1 回答

  • 0

    我做了最好的测试,但那只是我 . 为了让玩家从命中空间条件跳转,你需要与hittest一起检查 vertSpeed ,所以如果垂直速度小于零,那么我们就跳跃了,我们完全忽略了那个命中测试 .

    if (hitFloor)
        if (vertSpeed>0){
            trace("Grounded");
            vertSpeed = Infinity;
        }
    // else not grounded, let's fly upwards
    

相关问题