using UnityEngine; namespace Rokid.UXR.Interaction { /// /// 射线投射器 /// public class NormalRayCaster : BaseRayCaster { protected override void Init() { base.Init(); if (inputOverride == null) { inputOverride = GetComponent(); if (inputOverride == null) { inputOverride = gameObject.AddComponent(); } } } protected override bool ProcessDrag(Ray ray) { // 计算拖拽点的目标位置 var targetHitPosition = transform.position + ray.direction * oriHitPointDis; var delta = targetHitPosition - oriHitPoint; m_SelectedObj.SendMessageUpwards(drag, delta, SendMessageOptions.DontRequireReceiver); oriHitPoint = targetHitPosition; return true; } protected override bool CanDrag(Vector3 delta) { return !dragging && (m_SelectedObj.GetComponent() != null || m_SelectedObj.GetComponentInParent() != null) && Vector3.SqrMagnitude(delta) >= m_DragThreshold * m_DragThreshold; } } }