private void Update() { var ray = _camera.ScreenPointToRay(Input.mousePosition); PlanetView planetView = null; var hits = Physics.RaycastAll(ray); var closest = hits.OrderBy(hit => { var mousePoint = hit.point; mousePoint.y = 0f; return(Vector3.Distance(hit.transform.position, mousePoint)); }).FirstOrDefault(); if (closest.transform) { planetView = closest.transform.GetComponent <PlanetView>(); } if (planetView != null) { planetView.IsUnderCursor = true; if (Input.GetMouseButtonDown(0)) { _shipBehaviour.SetTarget(planetView.PlanetBehaviour); } } _interactionData.CurrentlySelectedPlanet.Value = planetView; }