0

我有重力和跳跃“工作”。当您离开平台时,您会慢慢下落,直到再次与地板相撞,但玩家跳跃基本上是向上传送,而不是平稳地增加然后降低高度。我尝试在逻辑上结合 if 语句 1&3/2&4 来说明玩家可以在触地时跳跃或在他们离开时平稳跌落,但我最终出现错误并且我的玩家从屏幕上消失了。我的最终目标是在离开平台时平稳跳跃和平稳下降(匹配速度)。

注意:gravity = 1, vertSpeed = 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;
    }
4

1 回答 1

0

我会说不要做持续的hittest,但这只是我。要让玩家从击地状态跳起来,你需要vertSpeed和 hittest 一起检查,所以如果垂直速度小于零,那么我们正在跳跃,我们完全忽略了 hittest。

if (hitFloor)
    if (vertSpeed>0){
        trace("Grounded");
        vertSpeed = Infinity;
    }
// else not grounded, let's fly upwards
于 2013-09-09T05:37:04.863 回答