// Animancer // https://kybernetik.com.au/animancer // Copyright 2018-2024 Kybernetik // using UnityEngine; namespace Animancer.Samples.FineControl { /// /// Attempts to interact with whatever /// the cursor is pointing at when the user clicks the mouse. /// /// /// /// Sample: /// /// Doors /// /// /// https://kybernetik.com.au/animancer/api/Animancer.Samples.FineControl/ClickToInteract /// [AddComponentMenu(Strings.SamplesMenuPrefix + "Fine Control - Click To Interact")] [AnimancerHelpUrl(typeof(ClickToInteract))] public class ClickToInteract : MonoBehaviour { /************************************************************************************************************************/ #if UNITY_PHYSICS_3D /************************************************************************************************************************/ protected virtual void Update() { if (!SampleInput.LeftMouseUp) return; Ray ray = Camera.main.ScreenPointToRay(SampleInput.MousePosition); if (Physics.Raycast(ray, out RaycastHit raycastHit)) { IInteractable interactable = raycastHit.collider.GetComponentInParent(); interactable?.Interact(); } } /************************************************************************************************************************/ #else /************************************************************************************************************************/ protected virtual void Awake() { SampleReadMe.LogMissingPhysics3DModuleError(this); } /************************************************************************************************************************/ #endif /************************************************************************************************************************/ } }