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