Question by
Meorge · Feb 04, 2017 at 06:35 PM ·
cameramousecamera-movementcamera rotate
Camera controls not working quite right
Hi Unity Answers,
For one of my first Unity games, I'm trying to make a game that involves a first-person view, where the mouse can be moved to look around. This is my player script currently (with some unnecessary info removed): using UnityEngine; using System.Collections;
public class Player : MonoBehaviour {
public Camera playerCamera;
public float cameraRotationSpeed = -5f;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
Vector3 cameraVectorWithoutY = new Vector3 (playerCamera.transform.forward.x, playerCamera.transform.forward.y, playerCamera.transform.forward.z);
Vector3 newCameraVector = new Vector3 (transform.forward.x, playerCamera.transform.forward.y, transform.forward.z);
playerCamera.transform.forward = newCameraVector;
transform.forward = cameraVectorWithoutY; // Tells the player, "OK, the way the camera is facing is forward now!"
moveCameraByMouse ();
}
void moveCameraByMouse() {
float mouseMovementX = Input.GetAxis ("Mouse X");
float mouseMovementY = Input.GetAxis ("Mouse Y");
playerCamera.transform.Rotate (mouseMovementY * (-0.2f) * cameraRotationSpeed, mouseMovementX * cameraRotationSpeed, 0f);
float desiredAngle_X = playerCamera.transform.eulerAngles.x;
float desiredAngle_Y = playerCamera.transform.eulerAngles.y;
Quaternion quaternion_rot = Quaternion.Euler (desiredAngle_X, desiredAngle_Y, 0);
}
}
If the y
value in cameraVectorWithoutY
is set to 0f
, attempting to look up or down is buffered, and the camera slowly centers back to looking straight forward. If the y
value is simply playerCamera.transform.forward.y
(as it is here) the camera becomes more prone to "fall" up or down, instead of staying looking forward.
Does anyone have any idea what the issue is here, and how I can fix it? Thanks!
Comment