【发布时间】:2018-01-22 23:59:33
【问题描述】:
我正在寻找一些统一的 c# 脚本来更新第一人称控制器 相机旋转变换。更具体地说,我正在运行动画,并且在动画结束时,我在 fps 摄像机变换上设置了“电影摄像机变换”,如何显示代码。对于位置变量,一切正常。但是,旋转变量效果不佳。 该变量获得正确的变换旋转(相同的电影摄影机变换),但我看不到场景的变化。 “第一人称控制器旋转变换” 总是得到最后发生的旋转坐标。 我已经测试过很多旋转函数,比如Rotate(Vector3)、rotation、localRotation、eulerAngles、localEulerAngles....
Vector3 pos, roteuler;
public Camera fpscam, movie;
void getPosRot(){
roteuler = movie.transform.eulerAngles;
pos = movie.transform.position;
}
void Update(){
fps.transform.position = pos;
fps.transform.eulerAngles = roteuler;
}
【问题讨论】:
-
尝试使用
fps.transform.rotation = movie.transform.rotation? -
不起作用:/
-
即使你把它放在更新中?问题是 Vector3 存储为副本,而不是参考。因此,如果您的电影摄像机位置发生变化,它不会被更新。
-
我在更改后打印(fps.transform.rotation)和打印(movie.transform.rotation)。它们在 Update() 上是等价的。
-
你在哪里调用
getPosRot()函数?