    //~[[h̐B@̈ړEW]B
    //gpO[oϐFSetMirrorWorldX, SetMirrorWorldY
    //o̓O[oϐFSetMirrorWorldX, SetMirrorWorldY

    task TMirrorWorldX
    {
        //JnFW]EtOZbg
        SetX(2 * GetCenterX - GetX);
        SetPlayerX(2 * GetCenterX - GetPlayerX);
        SetMirrorWorldX = true;

        //vF@x]
        loop
        {
            let speed = PlayerSpeed;
            let xRate = cos(PlayerWay);

            SetPlayerX(GetPlayerX - 2* speed * xRate);
            yield;		//[vh~

            if( ! SetMirrorWorldX ) {break;}	//I
        }

        //I
        SetX(2 * GetCenterX - GetX);
        SetPlayerX(2 * GetCenterX - GetPlayerX);
    }

    task TMirrorWorldY
    {
        //JnFW]EtOZbg
        SetY(2 * GetCenterX - GetY);
        SetPlayerY(2 * GetCenterY - GetPlayerY);
        SetMirrorWorldY = true;

        //vF@x]
        loop
        {
            let speed = PlayerSpeed;
            let yRate = sin(PlayerWay);

            SetPlayerY(GetPlayerY - 2* speed * yRate);
            yield;		//[vh~

            if( ! SetMirrorWorldY ) {break;}	//I
        }

        //I
        SetY(2 * GetCenterX - GetY);
        SetPlayerY(2 * GetCenterY - GetPlayerY);
    }