Exemplo n.º 1
0
 public void ConnectTo(PuzzleElement2 element)
 {
     _connectedElement           = element;
     _lineRenderer.positionCount = 2;
     _lineRenderer.SetPosition(0, transform.position);
     _lineRenderer.SetPosition(1, element.transform.position);
     Connected?.Invoke(this);
 }
Exemplo n.º 2
0
    private void P_Connected(PuzzleElement2 obj)
    {
        if (obj.ConnectionFailed)
        {
            _puzzleElements.ForEach(p => p.ClearConnection());
        }

        if (_puzzleElements.TrueForAll(p => p.ConnectionSuccess))
        {
            StartCoroutine(Animate());
        }
    }
Exemplo n.º 3
0
    private void Update()
    {
        _lineRenderer.SetPosition(0, _fireSocket.transform.position);
        _lineRenderer.SetPosition(1, PlayerEyes.GetWorldLocation());
        _particleSystem.transform.position = PlayerEyes.GetWorldLocation();

        var        direction = (PlayerEyes.GetWorldLocation() - _fireSocket.transform.position).normalized;
        RaycastHit hit;

        if (Physics.Raycast(new Ray(_fireSocket.transform.position, direction), out hit))
        {
            _particleSystem.transform.rotation = Quaternion.LookRotation(hit.normal);

            var puzzleElement = hit.collider.GetComponent <PuzzleElement2>();
            if (puzzleElement && !_previousElement)
            {
                _previousElement = puzzleElement;
                _audioSource.Play();
            }

            if (puzzleElement && _previousElement && puzzleElement != _previousElement)
            {
                _previousElement.ConnectTo(puzzleElement);
                _previousElement = puzzleElement;
            }
            if (_previousElement && !_previousElement.ConnectionSuccess && !_previousElement.Completed)
            {
                _previousElement.UpdateEndLine(hit.point);
            }
        }

        if (_audioSource.time > 0.5f)
        {
            _audioSource.Stop();
        }
    }
Exemplo n.º 4
0
 public void ClearConnection()
 {
     _connectedElement           = null;
     _lineRenderer.positionCount = 0;
 }