请求实现基于Y轴旋转值计算子对象新偏移量的函数
绕Y轴旋转偏移量的函数实现
直接复用你已经用到的四元数旋转逻辑即可,核心是用对应角度的Y轴旋转四元数去乘旧偏移量,就能得到旋转后的新偏移量:
private Vector3 RotateOffset(Vector3 oldOffset, float rotationY) { // 创建绕Y轴旋转指定角度的四元数 Quaternion rotation = Quaternion.AngleAxis(rotationY, Vector3.up); // 用四元数旋转旧偏移向量,得到新偏移 return rotation * oldOffset; }
验证示例
用你给出的测试值调用:
var offset = new Vector3(0f,5f,10f); var rotationY = 90f; var newOffset = RotateOffset(offset, rotationY);
计算结果正好是Vector3(10f,5f,0f),符合预期。
原理说明
四元数是Unity中处理3D旋转的标准方式,Quaternion.AngleAxis(angle, axis)会生成一个绕指定轴旋转指定角度的四元数,用这个四元数乘以向量,就等价于将该向量绕对应轴旋转对应角度。因为你的需求是仅绕Y轴旋转,所以直接复用这个逻辑即可,和你实现朝向计算的思路完全一致——本质上朝向是旋转后的forward向量,偏移量则是旋转后的原始偏移向量。
内容的提问来源于stack exchange,提问作者user13002098
相关产品推荐
相关产品推荐

