예제 #1
0
    public override void Update()
    {
        if (UIHelperController.Instance.actionsToComplete.Contains(UIHelperController.HelperAction.Drag))
        {
            UIHelperController.Instance.DisableHelper(UIHelperController.HelperAction.Drag);
        }
        var vector3D = PlayerUtils.RetargetVector(_controller.movementVector, _controller.cameraTransform, _controller.joystickDeadZone);

        vector3D *= Mathf.Lerp(_controller.minSpeed, _controller.maxSpeed, _controller.movementVector.magnitude);

        if (_controller.moveObject && _controller.moveObject.canMove && _controller.inputMoveObject && !_controller.scannerSword.UsingScannerInHand() && vector3D.magnitude >= _controller.joystickDeadZone)
        {
            if (PlayerUtils.InputDirectionTolerance(_controller.moveObject.moveVector, _controller.moveObject.angleToAllowMovement, _controller.cameraTransform, _controller.movementVector) && _controller.moveObject.canPull)
            {
                _controller.characterController.Move(_controller.moveObject.moveVector * (_controller.moveObject.speedWhenMove * Time.deltaTime));
                _controller.moveObject.UnlockPosConstraints();
                _controller.moveObject.Pull();
                _controller.animator.SetBool("isDragging", true);
                _controller.animator.SetBool("isPushing", false);
            }

            if (PlayerUtils.InputDirectionTolerance(-_controller.moveObject.moveVector, _controller.moveObject.angleToAllowMovement, _controller.cameraTransform, _controller.movementVector) && _controller.moveObject.canPush)
            {
                _controller.characterController.Move(-_controller.moveObject.moveVector * (_controller.moveObject.speedWhenMove * Time.deltaTime));
                _controller.moveObject.UnlockPosConstraints();
                _controller.moveObject.Push();
                _controller.animator.SetBool("isPushing", true);
                _controller.animator.SetBool("isDragging", false);
            }

            if (!_controller.moveObject.moving)
            {
                if (_controller.moveObject.swordStabbed)
                {
                    _controller.scannerIntersect.DeleteIntersections();
                }
                else
                {
                    _controller.scannerIntersect.CheckIntersections(_controller.moveObject.GetComponent <BoxCollider>());
                }
                _controller.moveObject.moving = true;
            }

            if (_controller.characterController.velocity.sqrMagnitude > 0.1f)
            {
                _controller.DragSound();
            }
            else
            {
                _controller.StopDragSound();
            }
        }
        else if (_controller.moveObject && vector3D.magnitude < _controller.joystickDeadZone)
        {
            _controller.moveObject.moving = false;
            _controller.animator.SetBool("isPushing", false);
            _controller.animator.SetBool("isDragging", false);

            _controller.StopDragSound();
        }
        ExitState();
    }