private void handleMovement() { // no y axis velocity while stands if (controller.isGrounded) { velocity.y = 0; } // handles basic state if (Input.GetKey(KeyCode.RightArrow)) { direction = 1; if (transform.localScale.x < 0f) { transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); } baseState = BaseState.MOVE; } else if (Input.GetKey(KeyCode.LeftArrow)) { direction = -1; if (transform.localScale.x > 0f) { transform.localScale = new Vector3(-transform.localScale.x, transform.localScale.y, transform.localScale.z); } baseState = BaseState.MOVE; } else { direction = 0; baseState = BaseState.IDLE; } // handles aditional state if (controller.isGrounded && Input.GetKeyDown(KeyCode.UpArrow)) { isJumping = true; velocity.y = jumpSpeed; additionalState = AdditionalState.JUMP; } else if (isJumping && controller.isGrounded) { isJumping = false; additionalState = AdditionalState.NONE; } // sets state to to animator animator.SetInteger("baseState", (int)baseState); animator.SetInteger("additionalState", (int)additionalState); // calculates and apllies velocity var smoothedMovementFactor = controller.isGrounded ? groundDamping : airDamping; velocity.x = Mathf.Lerp(velocity.x, direction * runSpeed, Time.deltaTime * smoothedMovementFactor); velocity.y += gravity * Time.deltaTime; controller.move(velocity * Time.deltaTime); velocity = controller.velocity; }
public override void Execute(CharacterMono speller, CharacterMono target) { base.Execute(speller, target); target.AddBattleState(AdditionalState.DeepCopy()); }