字符是父对象,其子对象为照相机对象(FPS类型)。
照相机对象有一个脚本,它可以“抛出”光线投射来检测它前面的物体。
相机对象有一个子对象“十字”,这个子对象有一个脚本'ShowCrosshair‘。
Character <- Camera <- Crosshair.预期的行为应该是:我上下移动鼠标,相机围绕y轴旋转,同时交叉物体在屏幕中心平稳地移动。
但是,每当我移动鼠标上/下,交叉头发移动速度超过相机可以旋转和离开视线。
这是我的相机旋转代码:
//vertical is float and is initially zero and transform is for the current gameObject i.e Camera
vertical -= Input.GetAxis("Mouse Y");
transform.localRotation = Quaternion.Euler(new Vector3(vertical, 0.0f, 0.0f));此脚本附在照相机对象上。 人们希望交叉头发与相机一起移动,这就是为什么它被相机对象所取代的原因。
发布于 2017-04-17 13:40:13
我认为你不想要的行为会发生,因为每当你移动、旋转或缩放父母变换时,所有的孩子都会受到影响,因此当你旋转相机时,交叉头发会跟着它移动,然后你旋转十字头发,导致它第二次旋转,然后离开视线。
发布于 2017-04-17 16:25:21
它看起来像你在X轴上旋转,而不是在这条线上的Y(垂直):
transform.localRotation = Quaternion.Euler(new Vector3(vertical, 0.0f, 0.0f));另外,您可能应该将输入的影响乘以增量时间,否则它会移动得太快。
vertical -= Input.GetAxis("Mouse Y") * Time.deltaTime;但我不认为这是你的问题。您评论说,脚本附加到Camera。它是否也附在Crosshair上?因为如果是这样的话,你就会得到双轮旋转。如果没有,请看一下哪些脚本可能会改变Crosshair的旋转。如果你只是在移动相机,你根本不需要任何旋转的Crosshair (因为它会和它的父母一起移动)。
https://stackoverflow.com/questions/43452564
复制相似问题