private void Update() { if (Input.GetMouseButtonUp(0)) // Jeżeli lewy przycisk myszki został podniesiony { Ray mouseRay = _camera.ScreenPointToRay(Input.mousePosition); // Promień z pozycji myszki w głąb sceny if (Physics.Raycast(mouseRay, out var hitInfo)) // Sprawdź czy promień w coś trafił { IClickTarget clickTarget = hitInfo.collider.gameObject.GetComponent <IClickTarget>(); // Wyciągnijmy obiekt typu IClickTarget if (clickTarget != null) //Sprawdź czy był obiekt typu IClickTarget { clickTarget.Clicked(); // Powiedź obiektowi że został kliknięty } } } }
private void SingleCast(Ray mouseRay, float maxDistance) { if (Caster == null) { Debug.LogWarning("There is no ICaster for ClickController"); return; } if (Caster.Cast(mouseRay, out var hitInfo, maxDistance, _targetLayers)) // Sprawdź czy caster w coś trafił { IClickTarget clickTarget = hitInfo.collider.gameObject.GetComponent <IClickTarget>(); // Wyciągnijmy obiekt typu IClickTarget if (clickTarget != null) //Sprawdź czy był obiekt typu IClickTarget { clickTarget.Clicked(); // Powiedź obiektowi że został kliknięty } } }
private void NonAllocCast(Ray mouseRay, float maxDistance) { if (Caster == null) { Debug.LogWarning("There is no ICaster for ClickController"); return; } var hitsCount = Caster.CastNonAlloc(mouseRay, _allocatedHits, maxDistance, _targetLayers); for (int i = 0; i < hitsCount; i++) { IClickTarget clickTarget = _allocatedHits[i].collider.gameObject.GetComponent <IClickTarget>(); // Wyciągnijmy obiekt typu IClickTarget if (clickTarget != null) //Sprawdź czy był obiekt typu IClickTarget { clickTarget.Clicked(); // Powiedź obiektowi że został kliknięty } } }
private void AllCast(Ray mouseRay, float maxDistance) { if (Caster == null) { Debug.LogWarning("There is no ICaster for ClickController"); return; } var allHits = Caster.CastAll(mouseRay, maxDistance, _targetLayers); foreach (var hit in allHits) { IClickTarget clickTarget = hit.collider.gameObject.GetComponent <IClickTarget>(); // Wyciągnijmy obiekt typu IClickTarget if (clickTarget != null) //Sprawdź czy był obiekt typu IClickTarget { clickTarget.Clicked(); // Powiedź obiektowi że został kliknięty } } }