如何在保持重力恒定的同时自然跳跃



我有重力和跳跃"工作"。当你走下平台时,你会慢慢下降,直到你再次与地板相撞,但玩家的跳跃基本上是向上传送,而不是平稳增加然后降低高度。 我尝试在逻辑上组合 if 语句 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;
    }
我会

说不要做持续的命中测试,但这只是我。要让玩家从命中地板状态跳跃,您需要vertSpeed与 hittest 一起检查,因此如果垂直速度小于零,那么我们正在跳跃,我们完全忽略该命中率。

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

最新更新