protected virtual void ProcessInput() { #region Movement if (Input.GetKeyDown(KeyCode.UpArrow)) { OnInputChanged?.Invoke(Vector2.up, true); } if (Input.GetKeyDown(KeyCode.DownArrow)) { OnInputChanged?.Invoke(Vector2.down, true); } if (Input.GetKeyDown(KeyCode.RightArrow)) { OnInputChanged?.Invoke(Vector2.right, true); } if (Input.GetKeyDown(KeyCode.LeftArrow)) { OnInputChanged?.Invoke(Vector2.left, true); } if (Input.GetKeyUp(KeyCode.UpArrow)) { OnInputChanged?.Invoke(Vector2.up, false); } if (Input.GetKeyUp(KeyCode.DownArrow)) { OnInputChanged?.Invoke(Vector2.down, false); } if (Input.GetKeyUp(KeyCode.RightArrow)) { OnInputChanged?.Invoke(Vector2.right, false); } if (Input.GetKeyUp(KeyCode.LeftArrow)) { OnInputChanged?.Invoke(Vector2.left, false); } #endregion if (Input.GetKeyDown(KeyCode.Space)) { OnActionPressed?.Invoke(); } }
private void Update() { if (camcon.lockState) { Vector3 localDevc = transform.InverseTransformVector(pi.Dvec); anim.SetFloat("forward", localDevc.z * (pi.Run ? 2.0f : 1.0f)); anim.SetFloat("right", localDevc.x * (pi.Run ? 2.0f : 1.0f)); if (trackDirection) { model.transform.forward = planarVec.normalized; } else { model.transform.forward = transform.forward; } if (!lockPlanar) { planarVec = pi.Dvec * walkSpeed * (pi.Run ? runMulti : 1.0f); } } else { anim.SetFloat("right", 0); anim.SetFloat("forward", pi.Dmag * Mathf.Lerp(anim.GetFloat("forward"), (pi.Run ? 2.0f : 1.0f), 0.5f)); if (pi.Dmag > 0.1f && pi.inputEnabled) { model.transform.forward = Vector3.Slerp(model.transform.forward, pi.Dvec, 0.3f); } if (!lockPlanar) { planarVec = pi.Dmag * model.transform.forward * walkSpeed * (pi.Run ? runMulti : 1.0f); } } if (pi.Jump) { anim.SetTrigger("jump"); canAttack = false; } if (pi.Roll || rigid.velocity.magnitude > rollVelocityThreshold) { anim.SetTrigger("roll"); canAttack = false; } if (leftIsShield) { if (CheckAnimatorStateWithName("ground") || CheckAnimatorStateWithName("blocked")) { anim.SetBool("defense", pi.Defense); anim.SetLayerWeight(anim.GetLayerIndex("Defense"), 1.0f); } else { anim.SetBool("defense", false); anim.SetLayerWeight(anim.GetLayerIndex("Defense"), 0); } } else { anim.SetLayerWeight(anim.GetLayerIndex("Defense"), 0); } if (canAttack && (CheckAnimatorStateWithName("ground") || CheckAnimatorStateWithTag("attackL") || CheckAnimatorStateWithTag("attackR"))) { if (pi.LeftAttack || pi.RightAttack) { if (pi.LeftAttack && !leftIsShield) { anim.SetBool("leftHandAttack", true); anim.SetTrigger("attack"); } else if (pi.RightAttack) { anim.SetBool("leftHandAttack", false); anim.SetTrigger("attack"); } } if (pi.LeftHeavyAttack || pi.RightHeavyAttack) { if (pi.RightHeavyAttack) { //right heavy attack } else { if (!leftIsShield) { //left heavy attack } else { anim.SetTrigger("counterBack"); } } } } if (pi.Action) { OnActionPressed.Invoke(); } }