示例#1
0
    IEnumerator delayGlide(float _timer)
    {
        yield return(new WaitForSeconds(_timer));

        _timer *= 0.8f;
        mode    = E_mode.Roll;
    }
示例#2
0
    IEnumerator delayStop(float _timer)
    {
        yield return(new WaitForSeconds(_timer));

        mode       = E_mode.Glide;
        speed      = 0.08f;
        baseMove2 *= -1;
        eulerRot  *= -1;
        coroutine  = StartCoroutine(delayGlide(timer));
    }
示例#3
0
    IEnumerator delayRideDown()
    {
        yield return(new WaitForSeconds(0.1f));

        speed -= rideDown;

        if (speed <= 0)
        {
            mode  = mode = E_mode.Glide;
            speed = 0.08f;
            this.GetComponent <Animator>().runtimeAnimatorController = fallAnim;
            coroutine = StartCoroutine(delayGlide(timer));
        }
        else
        {
            StartCoroutine(delayRideDown());
        }
    }
示例#4
0
    public void animPlay(E_mode mode)
    {
        switch (mode)
        {
        case E_mode.win:
            anim.CrossFade("win", 0);
            break;

        case E_mode.lose:
            anim.CrossFade("lose", 0);
            break;

        case E_mode.num:
            break;

        default:
            break;
        }
    }
示例#5
0
    public void BreathAddForce(Vector3 vec, float force)
    {
        //Vector3 vec1 = vec.normalized * force;
        //Vector3 vec2 = move * speed;

        //Vector3 vec3 = vec1 + vec2;



        //モード・アニメ変換
        mode = E_mode.Ride;
        this.GetComponent <Animator>().runtimeAnimatorController = rideAnim;

        move  = vec.normalized;
        speed = force;

        rideDown = speed / 8;


        if (cross(baseMove1, move) < 0)
        {
            euler = new Vector3(0, 0, -25);
            this.transform.eulerAngles = euler;
            baseMove2 = new Vector3(1, 0, 0);
            eulerRot  = 3;
        }
        else
        {
            euler = new Vector3(0, 0, 25);
            this.transform.eulerAngles = euler;
            baseMove2 = new Vector3(-1, 0, 0);
            eulerRot  = -3;
        }


        rideRot  = dot(baseMove1, move);
        rideRot /= 5;

        StopAllCoroutines();
        StartCoroutine(delayRideDown());
    }
示例#6
0
    void Update()
    {
        pos   = this.transform.position;
        euler = this.transform.eulerAngles;

        float r = euler.z;

        if (r > 180)
        {
            r -= 360;
        }

        switch (mode)
        {
        case E_mode.Glide:

            //画像の傾きから移動方向を算出
            move = addition(baseMove2, radian(r)).normalized;
            break;

        case E_mode.Roll:

            //画像の傾きから移動方向を算出
            move = addition(baseMove2, radian(r)).normalized;
            //画像を傾かせる
            euler.z += eulerRot;
            //速度を下げる
            speed -= 0.006f;
            if (speed <= 0)
            {
                speed     = 0;
                mode      = E_mode.Stop;
                coroutine = StartCoroutine(delayStop(0.1f));
            }

            break;

        case E_mode.Stop:
            break;

        case E_mode.Ride:
            if (cross(baseMove1, move) < 0)
            {
                move = addition(move, radian(-rideRot)).normalized;
            }
            else
            {
                move = addition(move, radian(rideRot)).normalized;
            }
            break;

        default:
            break;
        }


        Vector3 vecMove = move;

        if (pos.x >= highpoint1.x && pos.y <= boxHighPoint.y && area == E_Area.Player1)
        {
            if (vecMove.x >= 0)
            {
                vecMove.x = 0;
            }
        }
        else if (pos.x <= lowPoint2.x && pos.y <= boxHighPoint.y && area == E_Area.Player2)
        {
            if (vecMove.x <= 0)
            {
                vecMove.x = 0;
            }
        }
        else if (pos.y <= boxHighPoint.y && area == E_Area.Center)
        {
            vecMove.y = 0;
        }

        Debug.Log(vecMove);
        pos += vecMove * speed;
        this.transform.position    = pos;
        this.transform.eulerAngles = euler;


        //位置判定
        if (pos.x < highpoint1.x)
        {
            area = E_Area.Player1;
        }
        else if (pos.x > lowPoint2.x)
        {
            area = E_Area.Player2;
        }
        else
        {
            area = E_Area.Center;
        }

        if (pos.y < lowPoint1.y)
        {
            enabled     = false;
            gameOverFlg = true;
        }
    }