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

安卓第一人称3D游戏中点击Quad物体无法可视化旋转问题求助

解决建议与替代代码

原代码的潜在问题

  1. 冗余获取Transform:hit.transform本身就是Transform组件,无需重复调用GetComponent<Transform>()
  2. 不规范的四元数初始化:直接给未初始化的Quaternion实例赋值eulerAngles,易引发隐性问题
  3. 强制覆盖Y轴旋转:固定设置Y轴为90,会丢失原物体的Y轴旋转状态

修正后的代码

if (array[i].name == "Quad")
{
    Debug.Log("Quad object hitted");
    Transform quadTransform = hit.transform;
    Vector3 currentEuler = quadTransform.rotation.eulerAngles;
    Debug.Log(currentEuler);
    
    // 仅在Z轴累加45度,保留原X、Y轴旋转
    Vector3 newEuler = new Vector3(currentEuler.x, currentEuler.y, currentEuler.z + 45f);
    quadTransform.rotation = Quaternion.Euler(newEuler);
}

额外排查方向

  • 父物体影响:如果Quad是某个物体的子对象,父物体的旋转会导致视觉旋转和世界旋转不一致,改用本地旋转试试:
    Vector3 currentLocalEuler = quadTransform.localRotation.eulerAngles;
    Vector3 newLocalEuler = new Vector3(currentLocalEuler.x, currentLocalEuler.y, currentLocalEuler.z + 45f);
    quadTransform.localRotation = Quaternion.Euler(newLocalEuler);
    
  • 其他脚本/组件干扰:检查Quad是否挂载了动画组件(Animator)、刚体(Rigidbody)等。动画可能锁定旋转属性,刚体若开启旋转约束也会阻止旋转。
  • 旋转轴验证:Quad默认朝向可能和你预期的不同,可临时修改X/Y轴的旋转值,确认视觉上是否有变化,排查是否选对了旋转轴。
  • 对象正确性:确认日志输出的Quad object hitted对应的是你要操作的目标Quad,避免误操作了同名物体。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:36:04