private void Move() { float verticalAxis = Input.GetAxisRaw("Vertical"); float horizontalAxis = Input.GetAxisRaw("Horizontal"); if (verticalAxis != 0 || horizontalAxis != 0) { if (IsMoving == false) { StartedMoving?.Invoke(); player.ChangeState((int)PlayerState.Moving); } IsMoving = true; var transformCache = transform; Vector3 forward = transformCache.forward; Vector3 right = transformCache.right; Vector3 movementVector = (forward * verticalAxis) + (right * horizontalAxis); movementVector.Normalize(); movementDirection = movementVector; rigidbody.AddForce(movementVector * currentSpeed, ForceMode.Impulse); } else { if (IsMoving) { StoppedMoving?.Invoke(); player.ChangeState(-(int)PlayerState.Moving); } IsMoving = false; } }
private void OnTriggerEnter(Collider other) { if (!other.gameObject.CompareTag("Player") && !other.isTrigger) { if (currentColliders.Count == 0) { TouchedGround?.Invoke(); player.ChangeState(-(int)PlayerState.InAir); } currentColliders.Add(other); } }