Unity3D:transform.LookAt() Y轴旋转偏移问题求助
激光瞄准器旋转偏差问题解决
问题根源
你调用LookAt时传入的第二个参数reticleTransform.up是错误的。LookAt的第二个参数作用是定义目标物体的"向上"参考轴,如果用准星的向上方向做参考,当准星上下移动时,激光的旋转会被准星自身的轴带偏,导致Y轴旋转出现偏差。只有当准星和玩家同高度时,准星的up和世界/玩家up方向一致,才会显示正常。
修复代码
把LookAt的第二个参数换成世界向上方向或者玩家自身的向上方向即可:
// 用世界向上(适合玩家不会倾斜的场景) laserSightTransform.LookAt(reticleTransform, Vector3.up); // 或者用玩家自身向上(适合玩家可能有倾斜、攀爬等场景) laserSightTransform.LookAt(reticleTransform, playerTransform.up);
额外确认
确保你的圆柱体初始设置正确:轴心在底面,且Z轴正方向是激光延伸的方向(如果是默认圆柱体,需要旋转90度让Z轴朝前,你已经完成这一步的话可以忽略)。
修改后,激光瞄准器会和你用Debug.DrawRay绘制的绿色线完全对齐,精准指向准星中心。
内容的提问来源于stack exchange,提问作者Dronami
相关产品推荐
相关产品推荐

