两个物体在场景中,最初没有设置旋转。
以上两个物体初始没有旋转。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Inverse : MonoBehaviour
{
public GameObject goOrg;
public GameObject goNew;
// Start is called before the first frame update
void Start()
{
// 两个物体初始施加同样的旋转、绕Y轴旋转30度。
Quaternion rot1 = Quaternion.AngleAxis(30.0f, Vector3.up);
goOrg.transform.rotation = rot1;
goNew.transform.rotation = rot1;
// New物体的旋转设置为旋转的逆
goNew.transform.rotation = Quaternion.Inverse(rot1);
Debug.Log("Org rotation:");
Debug.Log(goOrg.transform.rotation);
Debug.Log("New rotation:");
Debug.Log(goNew.transform.rotation);
// 使旋转轴变为负Y,结果是一样的
Quaternion rot2 = Quaternion.AngleAxis(30.0f, -Vector3.up);
Debug.Log("Verify rotation:");
Debug.Log(rot2);
}
// Update is called once per frame
void Update()
{
}
}
结果为红色的(new物体)变为绕Y轴转负30度。原理:四元数取逆就是x, y, z分量取负,此例旋转轴变为负Y。