父动画影响主摄影机旋转(是子摄影机)Unity

本文关键字:摄影机 Unity 旋转 动画 影响 | 更新日期: 2024-09-17 04:01:41

我在unity中开发了一个runner游戏,我已经完成了编码部分,但当我将动画应用于我的角色对象(即z轴旋转)时,相机也会随之旋转。那么,我如何才能停止主相机的旋转,它是我的主要跑步者对象的孩子。此外我不希望主摄像头的旋转发生任何变化

主摄像头转换:-

  • 初始位置为(3,13,-28)
  • 初始旋转为(20,0,0)
  • 初始比例为(0,0,0)

我在一个单独的脚本中尝试了一些代码,并将其附加到主摄像头上:-

  1. transform.parent=null
  2. Camera.main.transform.rrotation=四元数标识
  3. Camera.main.transform.eulerAngles=新矢量3(20,0f,0f)
  4. distance Traveled1=新矢量3(runnercode.dedistance Traveled,0f,0f)
  5. Camera.main.transform.eulerAngles=新矢量3(runnercode.distanceTraveled,0f,0f);(有效,但旋转总是变化的)

有什么解决方案吗?我使用C#编写脚本

父动画影响主摄影机旋转(是子摄影机)Unity

如果要确保在渲染帧之前更正旋转,代码需要位于LateUpdate中。但是你有没有考虑过制作一个单独的"FollowObject"脚本,这样相机就不需要是子对象?你可能也会发现它的其他用途。因为除了位置之外,您真的不想要父/子关系的任何其他语义。

我认为你的方向代码不对。你把距离看作一个角度。eulerAngles指的是x/y/z度,而不是方向矢量。若要使用方向矢量,需要指定transform.forward = direction;。你到底想往哪个方向看?朝着什么?每帧方向相同(任意)?CCD_ 4和CCD_。

编辑:为了清楚起见,我认为把相机挂在角色身上是个坏主意。你可能至少会遇到动作不稳和位置不正确的问题。

您只需将旋转设置代码放在相机上的LateUpdate中即可:

void LateUpdate()
{
    transform.eulerAngles = new Vector3(20,0f,0f);
}