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

时间:2013-09-08 19:55:52

标签: actionscript-3 gravity

我有引力和跳跃“工作”。当你从平台上走下去时,你会慢慢下降,直到你再次与地板发生碰撞,但是玩家跳跃基本上是向上传送,而不是平稳增加然后降低高度。我已经尝试过将声明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 :(得分:0)

我会说不要经常打击,但那只是我。为了让玩家从触地条件跳起来,你需要与hittest一起检查vertSpeed,所以如果垂直速度小于零,那么我们就会跳跃,我们完全忽略了那个命中测试。

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