コード例 #1
0
    private void UpdateInteractiveInput()
    {
        if (!InteractButtonPressed())
        {
            return;
        }

        var interactElement = GameController.instance.activeInteractiveElement as MonoBehaviour;

        if (interactElement != null)
        {
            if (GameController.instance.activeInteractiveElement as TreeController != null)
            {
                if (!_charAnimator.isChopping)
                {
                    // Cut the tree only if character ended chopping animation
                    GameController.instance.activeInteractiveElement.Interact();
                    _charAnimator.ChopAnimation();
                }
            }
            else
            {
                GameController.instance.activeInteractiveElement.Interact();

                if (_characterHands.currentlyHolding == Holdable.Wood ||
                    _characterHands.currentlyHolding == Holdable.Torch)
                {
                    if (_carriedTorch != null)
                    {
                        Destroy(_carriedTorch.gameObject);
                    }

                    _characterHands.AddWoodToFire();

                    return;
                }

                if (!interactElement.CompareTag("Fire"))
                {
                    return;
                }

                var torchFuel = _characterHands.PickTorch();

                _carriedTorch = TorchController.Craft(_torchPrefab, _transform, torchFuel);

                return;
            }
        }

        if (_carriedTorch == null)
        {
            return;
        }

        _carriedTorch.Place(_transform.position + _transform.forward);
        _carriedTorch.transform.parent = null;
        _carriedTorch.gameObject.SetActive(true);
        _carriedTorch = null;
        _characterHands.SetHolding(Holdable.Nothing);
    }