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