Пример #1
0
        private void HandleMovement(float delta)
        {
            if (AnimeHandler.anim.GetBool("isInteracting") || AnimeHandler.anim.GetBool("attacking"))
            {
                return;
            }

            moveDirection  = cameraObject.forward * inputHandler.vertical;
            moveDirection += cameraObject.right * inputHandler.horizontal;
            moveDirection.Normalize();
            moveDirection.y = 0;

            float speed = movementSpeed;

            moveDirection *= speed;

            Vector3 projectedVelocity = Vector3.ProjectOnPlane(moveDirection, normalVector);

            RB.velocity = projectedVelocity * _speed;

            AnimeHandler.UpdateAnimatorValues(inputHandler.moveAmount, 0);
            if (AnimeHandler.canRotate)
            {
                HandleRotation(delta);
            }
            if (!AnimeHandler.anim.GetBool("isInteracting"))
            {
                _pm.replenishStamina(staminaRegen);
            }
        }
        public void HandleMovement(float delta)
        {
            if (inputHandler.rollFlag)
            {
                return;
            }

            if (playerManager.isInteracting)
            {
                return;
            }

            moveDirection  = cameraObject.forward * inputHandler.vertical;
            moveDirection += cameraObject.right * inputHandler.horizontal;
            moveDirection.Normalize();
            moveDirection.y = 0;

            float speed = movementSpeed;

            if (inputHandler.sprintFlag && inputHandler.moveAmount > 0.5)
            {
                speed          = sprintSpeed;
                isSprinting    = true;
                moveDirection *= speed;
            }
            else
            {
                if (inputHandler.moveAmount < 0.5)
                {
                    moveDirection            *= walkingSpeed;
                    playerManager.isSprinting = false;
                }
                else
                {
                    moveDirection *= speed;
                }
            }


            Vector3 projectedVelocity = Vector3.ProjectOnPlane(moveDirection, normalVector);

            rigidbody.velocity = projectedVelocity;

            animatorHandler.UpdateAnimatorValues(inputHandler.moveAmount, 0, isSprinting);

            if (animatorHandler.canRotate)
            {
                HandleRotation(delta);
            }
        }