父动画影响主摄影机旋转(是子摄影机)Unity
本文关键字:摄影机 Unity 旋转 动画 影响 | 更新日期: 2024-09-17 04:01:41
我在unity中开发了一个runner游戏,我已经完成了编码部分,但当我将动画应用于我的角色对象(即z轴旋转)时,相机也会随之旋转。那么,我如何才能停止主相机的旋转,它是我的主要跑步者对象的孩子。此外我不希望主摄像头的旋转发生任何变化
主摄像头转换:-
- 初始位置为(3,13,-28)
- 初始旋转为(20,0,0)
- 初始比例为(0,0,0)
我在一个单独的脚本中尝试了一些代码,并将其附加到主摄像头上:-
- transform.parent=null
- Camera.main.transform.rrotation=四元数标识
- Camera.main.transform.eulerAngles=新矢量3(20,0f,0f)
- distance Traveled1=新矢量3(runnercode.dedistance Traveled,0f,0f)
- Camera.main.transform.eulerAngles=新矢量3(runnercode.distanceTraveled,0f,0f);(有效,但旋转总是变化的)
有什么解决方案吗?我使用C#编写脚本
如果要确保在渲染帧之前更正旋转,代码需要位于LateUpdate
中。但是你有没有考虑过制作一个单独的"FollowObject"脚本,这样相机就不需要是子对象?你可能也会发现它的其他用途。因为除了位置之外,您真的不想要父/子关系的任何其他语义。
我认为你的方向代码不对。你把距离看作一个角度。eulerAngles
指的是x/y/z度,而不是方向矢量。若要使用方向矢量,需要指定transform.forward = direction;
。你到底想往哪个方向看?朝着什么?每帧方向相同(任意)?CCD_ 4和CCD_。
编辑:为了清楚起见,我认为把相机挂在角色身上是个坏主意。你可能至少会遇到动作不稳和位置不正确的问题。
您只需将旋转设置代码放在相机上的LateUpdate
中即可:
void LateUpdate()
{
transform.eulerAngles = new Vector3(20,0f,0f);
}