private bool CheckForInteractableMachine(out MachinePlayerInteraction interactableMachine) { Ray _ray = new Ray(this.transform.position - new Vector3(0f, -0.5f, 0f), this.transform.forward); RaycastHit[] _hits = Physics.RaycastAll(_ray, characterController.radius * 2f); RaycastHit _nearestMachineHit = new RaycastHit(); float _smallestDistance = characterController.radius * 2.1f; bool _hasHitMachine = false; foreach (RaycastHit hit in _hits) { if (hit.collider.tag == "Machine") { float _distance = Vector3.Distance(hit.point, this.transform.position); if (_distance < _smallestDistance) { _smallestDistance = _distance; _nearestMachineHit = hit; _hasHitMachine = true; } } } bool _hasHitInteractableMachine = false; interactableMachine = null; if (_hasHitMachine) { interactableMachine = _nearestMachineHit.collider.GetComponent <MachinePlayerInteraction> (); if (!interactableMachine.Equals(null)) { _hasHitInteractableMachine = true; } } return(_hasHitInteractableMachine); }