public void TransitionToState(ATVBozuState newState) { ATVBozuState tmpInitialState = CurrentATVBozuState; OnStateExit(tmpInitialState, newState); CurrentATVBozuState = newState; OnStateEnter(newState, tmpInitialState); }
public void OnStateEnter(ATVBozuState state, ATVBozuState fromState) { stateTimer = 0; dropTimer = 0; switch (state) { case ATVBozuState.Idle: { //animator.SetBool("Idle", true); break; } case ATVBozuState.Shooting: { Shoot("notflat"); animator.SetBool("Shoot", true); break; } case ATVBozuState.Sweep: { animator.SetBool("Sweep", true); break; } case ATVBozuState.Jump: { GrenadeThrow(); float jumpVelocity; Motor.ForceUnground(); Gravity = -(2 * jumpHeight) / Mathf.Pow(timeToJumpApex, 2); maxGravity = Gravity * downMultiplier; jumpVelocity = Mathf.Abs(Gravity) * timeToJumpApex; verticalMoveSpeed = jumpVelocity; if (jumpForwards) { moveSpeed += initialForwardVelocity; } animator.SetBool("Jump", true); break; } case ATVBozuState.Charge: { animator.SetBool("Charge", true); break; } case ATVBozuState.CurveApproach: { animator.SetBool("Turn", true); break; } case ATVBozuState.Circle: { animator.SetBool("Turn", true); break; } case ATVBozuState.TailWhip: { animator.SetBool("Whip", true); activeDrift = 0; tailWhipActiveWidth = curveApproachAngle; break; } case ATVBozuState.TailWhipCoolDown: { activeDrift = 0; tailWhipActiveWidth = transform.rotation.eulerAngles.y; break; } case ATVBozuState.Fall: { verticalMoveSpeed = 8; stateTimer = 0; break; } } }
public void OnStateExit(ATVBozuState state, ATVBozuState toState) { switch (state) { case ATVBozuState.Idle: { //animator.SetBool("Idle", false); break; } case ATVBozuState.Shooting: { animator.SetBool("Shoot", false); break; } case ATVBozuState.Sweep: { animator.SetBool("Sweep", false); break; } case ATVBozuState.Jump: { timeSinceLastJump = 0; verticalMoveSpeed = 0; animator.SetBool("Jump", false); break; } case ATVBozuState.Charge: { animator.SetBool("Charge", false); break; } case ATVBozuState.CurveApproach: { animator.SetBool("Turn", false); break; } case ATVBozuState.Circle: { animator.SetBool("Turn", false); break; } case ATVBozuState.TailWhip: { activeDrift = 0; tailWhipActiveWidth = curveApproachAngle; break; } case ATVBozuState.TailWhipCoolDown: { animator.SetBool("Whip", false); tailWhipActiveWidth = curveApproachAngle; break; } case ATVBozuState.Fall: { verticalMoveSpeed = 0; break; } } }