public void ConnectTo(PuzzleElement2 element) { _connectedElement = element; _lineRenderer.positionCount = 2; _lineRenderer.SetPosition(0, transform.position); _lineRenderer.SetPosition(1, element.transform.position); Connected?.Invoke(this); }
private void P_Connected(PuzzleElement2 obj) { if (obj.ConnectionFailed) { _puzzleElements.ForEach(p => p.ClearConnection()); } if (_puzzleElements.TrueForAll(p => p.ConnectionSuccess)) { StartCoroutine(Animate()); } }
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(); } }
public void ClearConnection() { _connectedElement = null; _lineRenderer.positionCount = 0; }