Character是父对象,并且将camera对象作为其子对象(FPS类型)。
Camera对象有一个脚本,可以“抛出”raycast来检测它前面的对象。
Camera对象有一个子对象'Crosshair',它附有一个脚本'ShowCrosshair'。
Character <- Camera <- Crosshair.
预期的行为应该是:我上下移动鼠标,相机围绕y轴旋转,同时十字准线对象在屏幕中心平滑移动。
但是,每当我向上/向下移动鼠标时,十字准线的移动速度都会超过相机可以旋转的距离。
这是我的Camera Rotate代码:
//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));
此脚本附加到Camera对象。
希望Crosshair使用相机移动,这就是为什么它是相机对象的父级。
答案 0 :(得分:0)
我认为您的不受欢迎的行为会发生,因为每当您移动,旋转或缩放父变换时,所有子项都会受到影响,因此当您旋转相机时,十字准线随之移动然后您旋转十字准线使其旋转一秒钟时间和消失。
答案 1 :(得分:0)
看起来你在这条线上围绕X轴而不是Y(垂直)旋转:
transform.localRotation = Quaternion.Euler(new Vector3(vertical, 0.0f, 0.0f));
此外,您应该将输入的影响乘以增量时间,否则它将移动得太快。
vertical -= Input.GetAxis("Mouse Y") * Time.deltaTime;
但我不认为这是你的问题。您注释该脚本已附加到Camera
。是否还附加到Crosshair
?因为如果是这样,那么你将获得双倍轮换。如果没有,请查看哪些脚本可能正在更改Crosshair
的轮换。如果您只是移动相机,则根本不需要旋转Crosshair
的任何内容(因为它将与其父项一起移动)。