将旋转的相机重置为再次位于玩家身后
Reset rotated camera to be behind player again
我正在开发一个跟随玩家的第三人称轨道摄像机。
我成功地可以将摄像头贴在玩家身上,还可以使用 Mouse X
围绕玩家旋转摄像头。
自从 3 小时以来,在玩家在世界中移动并旋转了一点并且相机环绕后,我一直在努力将相机(单击鼠标右键)重置为正好在玩家身后(露出他的背)在他身边。
感谢您的帮助!
Vector3 defaultOffset; // offset on scene start
Vector3 offset; // offset when camera is rotated by Mouse X
void Start() {
defaultOffset = transform.position - player.transform.position;
offset = defaultOffset;
}
void LateUpdate() {
if (Input.GetMouseButtonDown(1)) {
// reset offset vector to be behind
// player on right-mouse button click
// ??? HOW ???
} else {
// take movement of Mouse axis to rotate around the player
float degrees = Input.GetAxis("Mouse X") * 0.5 * Time.deltaTime;
Quaternion angle = Quaternion.AngleAxis(degrees, Vector3.up);
offset = angle * offset;
}
// set camera position and look at player
transform.position = player.transform.position + offset;
transform.LookAt(player.transform);
}
尝试:
transform.position = player.position - player.forward * 2.5f;
我认为这可能有效。
我正在开发一个跟随玩家的第三人称轨道摄像机。
我成功地可以将摄像头贴在玩家身上,还可以使用 Mouse X
围绕玩家旋转摄像头。
自从 3 小时以来,在玩家在世界中移动并旋转了一点并且相机环绕后,我一直在努力将相机(单击鼠标右键)重置为正好在玩家身后(露出他的背)在他身边。
感谢您的帮助!
Vector3 defaultOffset; // offset on scene start
Vector3 offset; // offset when camera is rotated by Mouse X
void Start() {
defaultOffset = transform.position - player.transform.position;
offset = defaultOffset;
}
void LateUpdate() {
if (Input.GetMouseButtonDown(1)) {
// reset offset vector to be behind
// player on right-mouse button click
// ??? HOW ???
} else {
// take movement of Mouse axis to rotate around the player
float degrees = Input.GetAxis("Mouse X") * 0.5 * Time.deltaTime;
Quaternion angle = Quaternion.AngleAxis(degrees, Vector3.up);
offset = angle * offset;
}
// set camera position and look at player
transform.position = player.transform.position + offset;
transform.LookAt(player.transform);
}
尝试:
transform.position = player.position - player.forward * 2.5f;
我认为这可能有效。