public override void FixedUpdate() { if (!isLocalPlayer) { return; } base.FixedUpdate(); // Movement Vector3 movement = new Vector3(SimpleInput.GetKeyCodeAxis(Game.instance.controls.moveLeft, Game.instance.controls.moveRight), 0, SimpleInput.GetKeyCodeAxis(Game.instance.controls.moveDown, Game.instance.controls.moveUp)); movement = Camera.main.transform.TransformDirection(movement); movement.y = 0; movement.Normalize(); if (hurtTime > 0) { hurtTime -= Time.deltaTime; } if (controller.isGrounded) { if (canMove) { if (movement.z > 0) { direction = Direction.Up; } if (movement.z < 0) { direction = Direction.Down; } if (movement.x < 0) { direction = Direction.Left; } if (movement.x > 0) { direction = Direction.Right; } if (movement != Vector3.zero) { state = State.Move; movement *= 4f; } else { state = State.Idle; } if (hurtTime <= Time.deltaTime && !justJumped) { if (Input.GetKey(Game.instance.controls.jump)) { justJumped = true; jumpVelocity = 0.25f; } } } if (!justJumped) { jumpVelocity = 0f; } oldMovement = movement; } else { if (controller.velocity.y > 0) { state = State.Jump; } else { state = State.Fall; justJumped = false; } if (hurtTime > Time.deltaTime) { oldMovement = Vector3.zero; } jumpVelocity -= 0.008f; } controller.Move(((controller.isGrounded ? (canMove ? movement : Vector3.zero) : oldMovement) + Physics.gravity) * Time.deltaTime + new Vector3(0, jumpVelocity, 0)); animator.SetFloat("Attack Speed", inventory.slots[currentSlot].item != null ? inventory.slots[currentSlot].item.swingSpeed : Item.fist.swingSpeed); // Mouse Ray mouseRay = Camera.main.ScreenPointToRay(Input.mousePosition); Physics.Raycast(mouseRay, out Game.mouseHit, 100, ~(ignoreLayers | 1 << LayerMask.NameToLayer("Hidden"))); }