1

私は問題があります。私は摩擦で動きを作り、最初の実行時にコードが完全に実行されるのを緩和しましたが、最初の実行後は適切に実行されません。デバッグするトレース コマンドを追加しましたが、初めて実行した後、vx値が NaN を返します。

leftPressed はブール値です

righPressed はブール値です

vx は x 速度

フリクションはイーズアウトの速さ

    public var vy:Number = 30;
    public var vyInitial:Number;//This is initialised later
    public var gravity:Number = 2.0;
    public var vx:Number = 0.4;
    public var vxInitial:Number;//This is initialised later
    public var friction:Number = 0.4;

使用したコードは次のとおりです。

        if (leftPressed)
        {
            if (vx == 0)
            {
                vx = vxInitial;
            }
            char.x -=  vx;
            lastMove = "Left";
        }
        else if (rightPressed)
        {
            if (vx == 0)
            {
                vx = vxInitial;
            }
            char.x +=  vx;
            lastMove = "Right";
        }
        else if (rightPressed == false && leftPressed == false)
        {
            if (lastMove == "Right" && rightPressed == false && leftPressed == false)
            {
                vx -=  friction;
                trace(vx);
                if (vx < 0)
                {
                    lastMove = "No Move";
                    trace("lastMove Right");
                    vx = 0;
                }
                else if (vx > 0)
                {
                    trace("moving left");
                    char.x +=  vx;
                }
            }
            else if (lastMove == "Left" && rightPressed == false && leftPressed == false)
            {
                vx -=  friction;
                trace(vx);
                if (vx < 0)
                {
                    lastMove = "No Move";
                    trace("lastMove Left");
                    vx = 0;
                }
                else if (vx > 0)
                {
                    trace("moving LEft");
                    char.x -=  vx;
                }
            }
        }
4

1 に答える 1