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;
    }
}

 

 
posted @ 2020-04-22 17:18  有只小耗子  阅读(444)  评论(0编辑  收藏  举报