Beispiel #1
0
    public IEnumerator MyRoar(float upTime, float roarTime, float downTime)
    {
        AnimationChange(BatState.IDLE, BatDirection.FRONT);
        animatable = false;
        moveHead   = false;
        headAnimator.gameObject.transform.localPosition = Vector3.zero;
        batDirection = BatDirection.FRONT;
        //Wind Up
        for (float i = 0; i < upTime;)
        {
            headAnimator.gameObject.transform.localPosition = new Vector2(0, headAnchor.y + (i));
            yield return(new WaitForSeconds(1 / 60.0f));

            i += 1 / 60.0f;
        }

        //Roar
        headAnimator.Play("Attack_Front", 0);
        for (float i = 0; i < roarTime;)
        {
            //headAnimator.gameObject.transform.localPosition = new Vector2(0, headAnimator.gameObject.transform.localPosition.y + 60 / i / upTime);
            yield return(new WaitForSeconds(1 / 60.0f));

            i += 1 / 60.0f;
        }

        //Wind Down
        for (float i = 0; i < upTime;)
        {
            headAnimator.gameObject.transform.localPosition = new Vector2(0, headAnchor.y - (i));
            yield return(new WaitForSeconds(1 / 60.0f));

            i += 1 / 60.0f;
        }

        headAnimator.Play("Idle_Front", 0);
        animatable = true;
        AnimationChange(BatState.IDLE, BatDirection.FRONT);
        yield break;
    }
Beispiel #2
0
    public void AnimationChange(BatState state, BatDirection direction)
    {
        if (!animatable)
        {
            return;
        }
        batDirection = direction;
        string bodyAnimation = name + "_";
        string headAnimation = "";

        moveHead = true;
        switch (state)
        {
        case BatState.LUNGE:
            bodyAnimation = bodyAnimation + "Lunge";
            headAnimation = "Attack";

            if (direction == BatDirection.LEFT)
            {
                transform.localScale = new Vector3(-1, 1, 1);
            }
            else
            {
                transform.localScale = new Vector3(1, 1, 1);
            }


            switch (direction)
            {
            case BatDirection.FRONT:
                headAnimation = headAnimation + "_Front";
                headAnchor    = lungeFront;
                bodyAnimation = bodyAnimation + "_Front";

                break;

            case BatDirection.BACK:
                headAnimation = headAnimation + "_Back";
                headAnchor    = lungeBack;
                bodyAnimation = bodyAnimation + "_Back";
                break;

            case BatDirection.RIGHT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = lungeSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;

            case BatDirection.LEFT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = lungeSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;
            }

            break;

        case BatState.FLY:
            bodyAnimation = bodyAnimation + "Fly";
            headAnimation = "Attack";

            if (direction == BatDirection.LEFT)
            {
                transform.localScale = new Vector3(-1, 1, 1);
            }
            else
            {
                transform.localScale = new Vector3(1, 1, 1);
            }


            switch (direction)
            {
            case BatDirection.FRONT:
                headAnimation = headAnimation + "_Front";
                headAnchor    = flyFront;
                bodyAnimation = bodyAnimation + "_Front";
                break;

            case BatDirection.BACK:
                headAnimation = headAnimation + "_Back";
                headAnchor    = flyBack;
                bodyAnimation = bodyAnimation + "_Back";
                break;

            case BatDirection.RIGHT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = flySide;
                bodyAnimation = bodyAnimation + "_Side";
                break;

            case BatDirection.LEFT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = flySide;
                bodyAnimation = bodyAnimation + "_Side";
                break;
            }

            break;

        case BatState.SHOOT:

            bodyAnimation = bodyAnimation + "Idle";
            headAnimation = "Attack";

            if (direction == BatDirection.LEFT)
            {
                transform.localScale = new Vector3(-1, 1, 1);
            }
            else
            {
                transform.localScale = new Vector3(1, 1, 1);
            }


            switch (direction)
            {
            case BatDirection.FRONT:
                headAnimation = headAnimation + "_Front";
                headAnchor    = idleFront;
                bodyAnimation = bodyAnimation + "_Front";
                break;

            case BatDirection.BACK:
                headAnimation = headAnimation + "_Back";
                headAnchor    = idleBack;
                bodyAnimation = bodyAnimation + "_Back";
                break;

            case BatDirection.RIGHT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = idleSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;

            case BatDirection.LEFT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = idleSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;
            }

            break;

        case BatState.IDLE:
            bodyAnimation = bodyAnimation + "Idle";
            headAnimation = "Idle";

            if (direction == BatDirection.LEFT)
            {
                transform.localScale = new Vector3(-1, 1, 1);
            }
            else
            {
                transform.localScale = new Vector3(1, 1, 1);
            }


            switch (direction)
            {
            case BatDirection.FRONT:
                headAnimation = headAnimation + "_Front";
                headAnchor    = idleFront;
                bodyAnimation = bodyAnimation + "_Front";
                break;

            case BatDirection.BACK:
                headAnimation = headAnimation + "_Back";
                headAnchor    = idleBack;
                bodyAnimation = bodyAnimation + "_Back";
                break;

            case BatDirection.RIGHT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = idleSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;

            case BatDirection.LEFT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = idleSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;
            }
            break;

        case BatState.WALK:
            bodyAnimation = bodyAnimation + "Walk";
            headAnimation = "Idle";

            if (direction == BatDirection.LEFT)
            {
                transform.localScale = new Vector3(-1, 1, 1);
            }
            else
            {
                transform.localScale = new Vector3(1, 1, 1);
            }


            switch (direction)
            {
            case BatDirection.FRONT:
                headAnimation = headAnimation + "_Front";
                headAnchor    = idleFront;
                bodyAnimation = bodyAnimation + "_Front";
                break;

            case BatDirection.BACK:
                headAnimation = headAnimation + "_Back";
                headAnchor    = idleBack;
                bodyAnimation = bodyAnimation + "_Back";
                break;

            case BatDirection.RIGHT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = idleSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;

            case BatDirection.LEFT:
                headAnimation = headAnimation + "_Side";
                headAnchor    = idleSide;
                bodyAnimation = bodyAnimation + "_Side";
                break;
            }
            break;
        }

        bodyAnimator.Play(bodyAnimation);
        headAnimator.Play(headAnimation, 0);
    }