RotateAround添加距离控制
Transform组件的扩展,添加了旋转半径的属性设置。
核心方法还是Quaternion*Vector
Vector指的是两个点的位置差(旋转点和固定点)。
public static class TransformEx { /// <summary> /// 通过固定点按照轴向旋转角度 /// </summary> /// <param name="selfTrans">自身的trans</param> /// <param name="point">固定点</param> /// <param name="axis">轴向</param> /// <param name="distance">半径</param> /// <param name="angle">角度</param> public static void RotateAroundByPointByDistance(this Transform selfTrans, Vector3 point, Vector3 axis,float distance, float angle) { Quaternion q = Quaternion.AngleAxis(angle, axis); Vector3 distanceOffset =Vector3.Normalize(selfTrans.position - point)*distance; selfTrans.position = point + q * distanceOffset; } }