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; }
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); }