Unity3d Unity 3D获取相机旋转角度

Unity3d Unity 3D获取相机旋转角度,unity3d,Unity3d,在我的unity应用程序中,最初我已将相机设置在某个位置。稍后,我会动态更改相机位置。这样做之后,我需要找到它旋转的角度/旋转角度,另一个物体需要以相同的角度旋转,但方向相反。 我有两个问题。 1.如何找到相机移动的角度? 2.如何将游戏对象旋转相同的值但方向相反。 我尝试了像target.transform.Rotate(Camera.main.transform.position-cameraNewPos)这样的方法;也在谷歌上搜索了很多,但找不到答案。在进行更改之前,您始终可以将当前的tr

在我的unity应用程序中,最初我已将相机设置在某个位置。稍后,我会动态更改相机位置。这样做之后,我需要找到它旋转的角度/旋转角度,另一个物体需要以相同的角度旋转,但方向相反。
我有两个问题。
1.如何找到相机移动的角度?
2.如何将游戏对象旋转相同的值但方向相反。

我尝试了像target.transform.Rotate(Camera.main.transform.position-cameraNewPos)这样的方法;也在谷歌上搜索了很多,但找不到答案。

在进行更改之前,您始终可以将当前的transform.rotation与其原始值进行比较,以查看不同的结果。然后,对另一个对象应用相同的更改(相反)

镜头: var delta=transform.rotation-_originalRotation

关于这一目标:
transform.rotation=transform.rotation-delta

如果您的相机位于位置P1,方向Q1位于起始位置,P2、Q2在移动后,您可以使用(使用transform.rotation和transform.position,表示对象的世界变换,与对象的层次无关)找到从1到2的平移T和旋转R:

R=Q1.逆()*Q2

T=P2-P1

请注意,不能减去四元数

然后,您可以简单地相应地移动其他对象

Obj.position=初始摄像机位置-T

Obj.rotation=initialCameraRotation*R(如果您也想镜像旋转,则为R.Inverse())

因此: 如果要获得从一个时间到另一个时间应用的旋转量,可以只保存开始处的数据,然后减去结束旋转-开始旋转

Vector3 iRotation;
Vector3 amountRot;
void Start() { // for example
    iRotation = obj.transform.rotation.eulerAngles;
}

void Update() { // at some point you want
    if (sth) amountRot = obj.transform.rotation.eulerAngles - iRotation;

    obj2.transform.rotation = Quaternion.Euler(-obj.transform.rotation.eulerAngles); // rotate opposite

@derHugo如果四元数很难使用,为什么不将其转换为euler?