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

Unity射线触发显示弹道后无法关闭的技术求助

问题修复方案

核心问题分析

  • 变量命名冲突:GameObject是Unity内置关键字,用作自定义变量会导致逻辑异常
  • 输入判断逻辑颠倒:当前代码在未按下E键时激活轨迹,按下时反而关闭,与需求完全相反
  • 状态变量activatedObject未正确更新:无法记录轨迹激活状态,导致重复判断失效
  • 未处理射线未击中弹孔的场景:移开视线后轨迹仍保持激活
  • 内部方法SetFalse未被调用,完全无效

修改后的完整代码

public class Trajectory : MonoBehaviour
{
    public Camera camera;
    public float ray_Range = 5f;

    public KeyCode interact = KeyCode.E;
    public GameObject interactUI;
    // 重命名变量避免与内置关键字冲突
    public GameObject trajectoryObject;

    // 记录轨迹当前激活状态
    private bool isTrajectoryActive = false;

    void Start()
    {
        trajectoryObject.SetActive(false);
        interactUI.SetActive(false);
    }

    void Update()
    {
        Ray ray_Cast = camera.ScreenPointToRay(new Vector2(Screen.width / 2, Screen.height / 2));
        RaycastHit ray_Hit;

        bool isLookingAtTrigger = Physics.Raycast(ray_Cast, out ray_Hit, ray_Range) && ray_Hit.collider.CompareTag("Trigger");

        // 更新交互UI显示
        interactUI.SetActive(isLookingAtTrigger);

        // 按下E键切换轨迹显示状态
        if (Input.GetKeyDown(interact))
        {
            // 允许在看向弹孔时切换,或已激活轨迹时关闭
            if (isLookingAtTrigger || isTrajectoryActive)
            {
                isTrajectoryActive = !isTrajectoryActive;
                trajectoryObject.SetActive(isTrajectoryActive);
            }
        }

        // 可选:移开视线时自动关闭轨迹
        if (!isLookingAtTrigger && isTrajectoryActive)
        {
            isTrajectoryActive = false;
            trajectoryObject.SetActive(false);
        }
    }
}

关键修改说明

  1. 变量重命名:将GameObject改为trajectoryObject,规避Unity内置关键字冲突
  2. 逻辑修正:
    • 用isLookingAtTrigger统一判断是否看向弹孔,简化嵌套逻辑
    • 按下E键时切换轨迹激活状态,符合"按E显示/关闭"的需求
  3. 状态管理:用isTrajectoryActive准确记录轨迹状态,确保切换逻辑可靠
  4. 场景补全:添加移开视线自动关闭轨迹的逻辑(可根据需求选择保留或删除)
  5. 冗余清理:移除未被调用的SetFalse方法,精简代码结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 02:40:30