Unity 中 CameraHandle 旋转问题:为什么 CameraHandle 会跟随 PlayerHandle 旋转?
这是因为 CameraHandle 是 PlayerHandle 的子物体,当 PlayerHandle 旋转时,CameraHandle 也会跟着旋转。在代码中,我们对 CameraHandle 进行了旋转,所以它会沿着 PlayerHandle 旋转。如果想要 CameraHandle 保持不变,可以将它移出 PlayerHandle 的子物体。
public class cCamera : MonoBehaviour
{
mPlayerInput pi;
public float horizontalSpeed = 30;
public float verticalSpeed = 30;
GameObject playerHandle;
GameObject cameraHandle;
GameObject model;
GameObject camera;
private void Awake()
{
}
private void Start()
{
cameraHandle = transform.parent.gameObject;
playerHandle = cameraHandle.transform.parent.gameObject;
pi = mPlayerInput.Inst;
model = playerHandle.GetComponent<cActor>().model;
camera = Camera.main.gameObject;
}
void Update()
{
Vector3 tempModelEuler = model.transform.eulerAngles;
playerHandle.transform.Rotate(Vector3.up, pi.Jright * horizontalSpeed * Time.deltaTime);
cameraHandle.transform.Rotate(Vector3.right, pi.Jup * -verticalSpeed * Time.deltaTime);
if (cameraHandle.transform.eulerAngles.x >= 310) cameraHandle.transform.eulerAngles = new Vector3(Mathf.Clamp(cameraHandle.transform.eulerAngles.x, 315, 360), 0, 0);
else if (cameraHandle.transform.eulerAngles.x < 320) cameraHandle.transform.eulerAngles = new Vector3(Mathf.Clamp(cameraHandle.transform.eulerAngles.x, 0, 30), 0, 0);
model.transform.eulerAngles = tempModelEuler;
camera.transform.position = transform.position;
camera.transform.rotation = transform.rotation;
}
}
原文地址: https://www.cveoy.top/t/topic/l3n4 著作权归作者所有。请勿转载和采集!