// Animancer // Copyright 2020 Kybernetik // using UnityEngine; namespace Animancer.Examples.FineControl { /// An object that can be interacted with. public interface IInteractable { /************************************************************************************************************************/ void Interact(); /************************************************************************************************************************/ } /// /// Attempts to interact with whatever the cursor is pointing at when the user clicks /// the mouse. /// [AddComponentMenu(Strings.MenuPrefix + "Examples/Fine Control - Click To Interact")] [HelpURL(Strings.APIDocumentationURL + ".Examples.FineControl/ClickToInteract")] public sealed class ClickToInteract : MonoBehaviour { /************************************************************************************************************************/ private void Update() { if (!Input.GetMouseButtonDown(0)) return; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit raycastHit; if (Physics.Raycast(ray, out raycastHit)) { var interactable = raycastHit.collider.GetComponentInParent(); if (interactable != null) interactable.Interact(); } } /************************************************************************************************************************/ } }