protected void SetCurrentMovement(PublicEnums.CurrentMovement movement) { if (currentMovement != PublicEnums.CurrentMovement.None || movement == PublicEnums.CurrentMovement.None) { StopCurrentMovement();//If the current movement is None then stop whatever was happening } currentMovement = movement; FullStopMomentum();//Full stop so there aren't any surprises with the vectors adding together. }
// Use this for initialization private void Awake() { initGravity = gravity; direction = PublicEnums.Direction.Right; initJumpForce = jumpForce; height = transform.lossyScale.y; stun = false; rigid = GetComponent <Rigidbody2D>(); currentMovement = PublicEnums.CurrentMovement.None; if (!controller) { controller = GetComponent <BaseController>(); } }
public void StopCurrentMovement() { switch (currentMovement) { case PublicEnums.CurrentMovement.DiveKick: StopCoroutine("DiveDash"); break; case PublicEnums.CurrentMovement.DashLeft: StopCoroutine("DashLeft"); break; case PublicEnums.CurrentMovement.DashRight: StopCoroutine("DashRight"); break; case PublicEnums.CurrentMovement.DashUp: StopCoroutine("DashUp"); break; case PublicEnums.CurrentMovement.DashDown: StopCoroutine("DashDown"); break; case PublicEnums.CurrentMovement.Step: StopCoroutine("StepAction"); break; case PublicEnums.CurrentMovement.Charge: StopCoroutine("ChargeMove"); break; default: break; } currentMovement = PublicEnums.CurrentMovement.None; //reset currentMovement to None controller.ReturnControl(); //Some actions may remove control. This line is a failsafe. }
public IEnumerator StepAction() { SetCurrentMovement(PublicEnums.CurrentMovement.Step); Vector2 startPos = rigid.position; Vector2 dir = direction == PublicEnums.Direction.Right ? Vector2.right : Vector2.left; while (Vector2.Distance(rigid.position, startPos) < 0.5) { rigid.position += dir * maxSpeed * Time.fixedDeltaTime; yield return(new WaitForFixedUpdate()); } startPos = rigid.position; dir = -dir; while (Vector2.Distance(rigid.position, startPos) < 0.25) { rigid.position += dir * maxSpeed * Time.fixedDeltaTime; yield return(new WaitForFixedUpdate()); } currentMovement = (PublicEnums.CurrentMovement.None); controller.ReturnControl(); }