Unity C# 代码修改父对象旋转时子相机与父级关联异常问题
轨道相机旋转异常问题与排查结论
基础实现方案
- 采用经典轨道相机架构:相机作为挂载旋转控制逻辑的空GameObject的子物体,与父空对象的中心保持固定单位偏移,设计目标是让相机环绕与父空对象位置重合的场景物体完成旋转运动。
- 配套场景存在对应示意图,可直观说明对象层级关系。
异常现象
- 问题复现路径:通过代码控制父对象旋转时,相机在世界空间内的位置保持静止,仅发生原地自转;尝试过多种旋转控制实现方案,该问题均稳定复现。
- 核心测试代码:
parent.transform.eulerAngles = new Vector3(0, 0, 90); - 异常的特殊表现:如果在Inspector面板中手动调整父对象的旋转参数,相机可以按照预期逻辑正常完成环绕运动,无任何异常。
根因定位与解决方案
- 排查确认:异常根因为相机自身挂载的自定义位移脚本,该脚本负责控制相机的X轴位置,运行时会每帧强制覆盖相机的世界空间坐标,抵消了父对象旋转带动子相机位移的效果。
- 解决方式:调整该自定义脚本的位移控制逻辑,移除对相机世界空间位置的强制覆写后,父对象的旋转控制逻辑即可恢复正常,相机环绕功能回归预期。
内容的提问来源于stack exchange,提问作者Daniel de Ridder
相关产品推荐
相关产品推荐

