Esempio n. 1
0
        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;
            }
        }
Esempio n. 2
0
 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);
     }
 }