Question by 
               aleksagamer511 · Sep 07, 2021 at 05:55 PM · 
                x-axis  
              
 
              Rotation X not working for First Person
Hello guys, Im new to Unity , and i learned how to make First Person on Youtube by Brackeys: https://www.youtube.com/watch?v=_QajrabyTJc I made everything important like Camera Rotation and Character Movement! I made Camera and i could rotate it first time, but after i finish cahracter movement it started to be glitchy. I try to rotate it to X Axis and like it want to rotate but locked by something. I searched and i found about Gimball Lock which is really bad , and i dont know how to fix it. Please guys help! Camera Script
 public class Kamera : MonoBehaviour
 {
     public float SensitivityX = 100f;
     public float SensitivityY = 100f;
     public Transform gameObjecBody;
   
     void Start()
     {
         Cursor.lockState = CursorLockMode.Locked;
          
     }
 
     // Update is called once per frame
     void Update()
     {
         float xRotationx = 0f;
         
         // X rotation
         float X = Input.GetAxis("Mouse X") * SensitivityX * Time.deltaTime;
         // Y rotation
         float MouseY = Input.GetAxis("Mouse Y") * SensitivityY * Time.deltaTime;
 
         xRotationx -= MouseY;
         xRotationx = Mathf.Clamp(xRotationx,-90f, 90f);
 
 
 
         gameObjecBody.Rotate(Vector3.up * X);
        transform.localRotation = Quaternion.Euler(xRotationx, 0.0f, 0.0f);
         
 
     }
 }
PlayerMovement
 using System.Collections;
 using System.Collections.Generic;
 using System.ComponentModel.Design;
 using UnityEngine;
 
 public class Kretanje : MonoBehaviour
 {
 
     public CharacterController Kontroler;
     public float brzinaIgraca = 10f;
     public float jumpHeight = 2f;
     public float gravity = -9.81f;
     Vector3 velocity;
     private bool IsGrounded;
     public LayerMask gameTrigger;
     public float groundDistance = 0.4f;
     public Transform groundCheck;
     private bool canJump = true;
     public float cooldownJump = 3f;
     
     // Start is called before the first frame update
     void Start()
     {
         
     }
 
     // Update is called once per frame
     void Update()
     {
 
         IsGrounded = Physics.CheckSphere(groundCheck.position, groundDistance, gameTrigger);
 
         if (IsGrounded && velocity.y < 0)
         {
             velocity.y = -2f;
         }
             
         
         if (Input.GetButtonDown("Jump") && IsGrounded && canJump)
         {
             Jump();
             StartCoroutine(Cooldown());
             
         }
        
         float Naprijed = Input.GetAxis("Vertical");
         float Desno = Input.GetAxis("Horizontal");
         Vector3 KreciKidalu = transform.right * Desno + transform.forward * Naprijed;
 
         Kontroler.Move(KreciKidalu* brzinaIgraca * Time.deltaTime) ;
 
         velocity.y += gravity * Time.deltaTime;
         Kontroler.Move(velocity * Time.deltaTime);
 
     }
 
     void Jump()
     {
         
         velocity.y = Mathf.Sqrt(jumpHeight * -2f * gravity);
       
         
 
     }
 
     IEnumerator Cooldown()
     {
         canJump = false;
         yield return new WaitForSeconds(cooldownJump);
         canJump = true;
     }
 }
 
 
               Comment
              
 
               
              Your answer
 
 
              koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                