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

Unity检测玩家左右侧物体的射线检测失效,命中方向始终为左侧

问题核心原因

你代码的错误出在Physics.Raycast的参数传值上,该API的第二个参数要求传入射线的方向向量,而你传入的是世界坐标系下的终点坐标,这才导致射线方向完全不符合预期,和世界坐标转换逻辑无关。
你之前定义的rayDirection本身是正确的:transform.right就是Unity内置的、基于玩家自身朝向转换后的世界坐标右方向,取反就是左方向,这部分逻辑没有问题。

修复方案

直接把Physics.Raycast调用的第二个参数换成你提前计算好的rayDirection即可,不需要使用你计算的playerEndPoint,射线长度已经由第四个参数sideCameraRayLenght控制。

修复后的代码如下:

Vector3 rayDirection = new Vector3();

switch (currentCameraSide)
{
    case CameraSide.Left:
        rayDirection = -transform.right;
        break;
    case CameraSide.Right:
        rayDirection = transform.right;
        break;
}

// 射线起点从玩家头部开始
Vector3 playerStartPoint = transform.position + (transform.up * 1.5f);

if (Physics.Raycast(playerStartPoint, rayDirection, out RaycastHit raycastHitA, sideCameraRayLenght, aimColliderMask))
{
    Debug.Log($"命中物体: {raycastHitA.transform.name}");
}

// 可选调试:在Scene视图中显示射线,方便验证方向是否正确
Debug.DrawLine(playerStartPoint, playerStartPoint + rayDirection * sideCameraRayLenght, Color.red, 0.1f);

补充说明

如果调整后仍然有方向异常,可以检查currentCameraSide的枚举赋值逻辑,确认左右枚举值和你预期的切换逻辑匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 12:06:00