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ため、垂直速度が 0 未満の場合はジャンプしており、hittest を完全に無視します。

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