如何将对象的局部轴旋转到另一个对象?

时间:2015-11-04 09:32:54

标签: c# unity3d unityscript

使用以下代码,我可以将局部Z轴旋转到另一个GameObject。

/// <summary>
/// Faces local Z axis to another target object.
/// </summary>
/// <param name="target">Target.</param>
private void FaceTo(GameObject target){
    float damping = 0.03f;
    var lookPos = target.transform.position - transform.position;

    var rotation = Quaternion.LookRotation(lookPos);

    transform.rotation = 
         Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping); 
}

Update方法中的结果如下:

Result

现在我需要使用另一个轴而不是我对象的Z轴面向对象;例如,我会使用正X轴来获得此结果:

enter image description here

如何修改脚本? 不幸的是,我不知道四元数和向量的数学,我有点困惑。

1 个答案:

答案 0 :(得分:1)

您可以添加另一个轮播:

var rotation = Quaternion.LookRotation(lookPos) * Quaternion.AngleAxis(-90, Vector3.up);