- Home /
Rotating first person camera on y axis not working?
Hi, I'm trying to rotate my first person camera on x and y axis, but it doesn't work when I try to do both at the same time.
Here's my code:
public class PlayerLook : MonoBehaviour
{
public float mouseSensitivity = 100f;
[HideInInspector] public float xRotation = 0f;
[HideInInspector] public float yRotation = 0f;
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90, 90);
yRotation += mouseX;
transform.localRotation = Quaternion.Euler(xRotation, yRotation, 0);
}
Thanks!
I'm also having this trouble this camera couln't be move in both x and y direction simulataneously. Also please tell whether you found a solution to this problem or not.
Hey, honestly I don't remember what the solution was, but I must have fixed it at some point.
Here's my code that works:
void Update()
{
//Get rotations
float mouseX = Input.GetAxisRaw("$$anonymous$$ouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxisRaw("$$anonymous$$ouse Y") * mouseSensitivity * Time.deltaTime;
xRotation -= mouseY;
xRotation = $$anonymous$$athf.Clamp(xRotation, -90, 90);
transform.localRotation = Quaternion.Euler(xRotation, transform.localEulerAngles.y, zRotation);
player.Rotate(Vector3.up * mouseX);
}
Thanks for the script. It worked like a charm. To clarify the what the script is doing I'm adding few words. This script should be attached to the camera and the camera must be child of player transform.
We are rotating camera on X axis i.e. vertically. And for rotating sideways, we are rotating the parent Player on Y axis.
Answer by TwiningLion1357 · Jun 10, 2020 at 03:08 AM
@Magmaw here is the code i use for my first person camera:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class mouseLook : MonoBehaviour
{
public float mouseSensitivity = 100f;
public Transform playerBody;
float xRotation = 0f;
// Start is called before the first frame update
void Start()
{
Cursor.lockState = CursorLockMode.Locked;
}
// Update is called once per frame
void Update()
{
float mouseX = Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
float mouseY = Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
xRotation -= mouseY;
xRotation = Mathf.Clamp(xRotation, -90f, 90f);
transform.localRotation = Quaternion.Euler(xRotation, 0f, 0f);
playerBody.Rotate(Vector3.up * mouseX);
}
}