Unity中如何实现交互平板的点击位置视觉指示器
问题:实现平板交互的视觉指示器效果
需求
我在游戏中制作了一个可交互平板,想要实现视觉指示器效果:在平板表面显示用户即将点击位置的圆形标记,效果如下:
已为平板和食指对象添加Collider组件。
过往尝试
我先后尝试两种方法均未达到理想效果:
- 第一种思路:当食指Collider进入平板Collider时实例化指示器对象,通过
Update()更新其本地位置为食指位置加偏移量,在OnTriggerExit时销毁指示器。虽然指示器能跟随食指移动,但效果不佳,且我希望尽量减少Update()的使用。
后续尝试了更接近预期的实现方式,代码如下:
public GameObject visualIndicator; private float _moveSpeed = 15f; private void OnTriggerEnter(Collider other) { if (other.CompareTag("indexFinger")) { reticle.SetActive(true); } } private void OnTriggerStay(Collider other) { if (other.CompareTag("indexFinger")) { Vector3 targetPosition = other.ClosestPoint(transform.position); visualIndicator.transform.position = Vector3.Lerp(visualIndicator.transform.position, targetPosition, Time.deltaTime * _moveSpeed); } } private void OnTriggerExit(Collider other) { if (other.CompareTag("indexFinger")) { reticle.SetActive(false); } }
初始状态下视觉指示器设为非激活,平板的Collider向外突出少许;当食指Collider与平板Collider碰撞时,激活指示器,并在OnTriggerStay中将指示器位置更新为碰撞点。
当前待解决问题
该实现效果已接近预期,但从侧面视角观察时,指示器会略微高出平板表面——因为其位置被设置为平板与食指Collider的碰撞点。我需要让指示器始终贴在平板表面,像示例图那样跟随食指移动。
内容的提问来源于stack exchange,提问作者Craving_gold
相关产品推荐
相关产品推荐

