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

如何检测玩家是否点击特定Layer?解决移动端游戏误触跳跃问题

解决移动端点击暂停按钮触发角色跳跃的误触问题

实现步骤:

  1. 创建点击屏蔽区域

    • 新建空GameObject(命名如PauseClickBlocker),根据游戏维度添加碰撞器:2D游戏加Box Collider 2D,3D游戏加Box Collider。
    • 调整碰撞器的大小与位置,完全覆盖暂停按钮所在区域,确保对象没有添加Sprite Renderer(空对象默认无此组件,无需额外移除)。
    • 新建专属Layer(比如命名为UIClickBlocker),将这个屏蔽区域对象的Layer设置为该层。
  2. 修改跳跃触发逻辑
    在控制角色跳跃的脚本中,每次检测到点击时,先判断点击是否命中屏蔽层的碰撞体,若命中则跳过跳跃逻辑。以下是2D游戏的示例代码:

private void Update()
{
    // 检测移动端触摸开始事件
    if (Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Began)
    {
        Vector2 touchWorldPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
        // 射线检测点击位置的碰撞体
        RaycastHit2D hitResult = Physics2D.Raycast(touchWorldPos, Vector2.zero);

        // 若点击到屏蔽层,直接返回不触发跳跃
        if (hitResult.collider != null && hitResult.collider.gameObject.layer == LayerMask.NameToLayer("UIClickBlocker"))
        {
            return;
        }

        // 执行角色跳跃逻辑
        TriggerPlayerJump();
    }
}

// 你的跳跃实现方法
private void TriggerPlayerJump()
{
    // 这里写跳跃的具体逻辑
}
  1. 关键注意事项
    • 确保碰撞器的Is Trigger未勾选,否则射线检测无法命中。
    • 若使用3D游戏,将Physics2D.Raycast替换为Physics.Raycast,并调整对应参数。
    • 测试时反复调整碰撞器范围,确保完全覆盖暂停按钮,避免边缘误触。

内容的提问来源于stack exchange,提问作者unitylearns

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 16:07:49