You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 06:16:12