예제 #1
0
        public void Use(ICameraRay cameraRay, Transform playerTransform)
        {
            const float maxDistance = 3f;

            if (!Physics.Raycast(cameraRay.GetCameraRay(),
                                 out RaycastHit hit, maxDistance))
            {
                return;
            }

            if (!IsAppropriatePosition(hit, playerTransform))
            {
                return;
            }

            GameObject item = hit.transform.gameObject;

            if (TryOperateDevice(item))
            {
                return;
            }

            if (TryPickUpUsefulItem(item))
            {
                return;
            }

            if (TryPickUpWeaponItem(item))
            {
                return;
            }
        }
예제 #2
0
        public PlayerController(ICameraRay cameraRay, IPlayerInput playerInput)
        {
            _playerMoveSystem = new PlayerMoveSystem();
            _playerLookSystem = new PlayerLookSystem();

            _weaponSystem   = new PlayerWeaponSystem();
            _activitySystem = new PlayerActivitySystem(_weaponSystem);

            _cameraRay   = cameraRay;
            _playerInput = playerInput;
        }