- Home /
Same y rotation (Camera and Character)
Hi i am having a problem with the rotation of my player. i made a camera script to control the camera And in my player script i wrote this: transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, Camera.main.transform.localEulerAngles.y, transform.localEulerAngles.z); And yes in the inspector tab it says that the y rotation of the player is the same as the y rotation of the camera but the camera still is rotated different.
Btw this is my player script:
void Start () { anim = GetComponent(); Rbody = GetComponent(); run = false; Cursor.lockState = CursorLockMode.Locked; }
// Update is called once per frame
void Update ()
{
transform.localEulerAngles = new Vector3(transform.localEulerAngles.x, Camera.main.transform.localEulerAngles.y, transform.localEulerAngles.z);
Physics.gravity = new Vector3(0f, -Gravity * Time.fixedDeltaTime, 0f);
if (Input.GetKeyDown("1"))
{
anim.Play("Run", -1,0f);
}
if (Input.GetKey(KeyCode.LeftShift)&& inputV > 0.1)
{
currentrunspeed = 150f;
run = true;
}
else
{
run = false;
currentrunspeed = 80f;
}
inputH = Input.GetAxis("Horizontal");
inputV = Input.GetAxis("Vertical");
anim.SetFloat("InputH", inputH);
anim.SetFloat("InputV", inputV);
anim.SetBool("Run",run);
float moveX = inputH * 50f * Time.deltaTime;
float moveZ = inputV * currentrunspeed * Time.deltaTime;
Rbody.velocity = new Vector3(moveX,Rbody.velocity.y, moveZ);
if (Input.GetKeyDown("space") && IsGrounded)
{
Rbody.AddForce(Vector3.up * JumpHeight * Time.deltaTime);
anim.SetBool("Jump", true);
}
else
{
anim.SetBool("Jump", false);
}
}
public bool IsGrounded;
void OnCollisionStay(Collision collisionInfo)
{
IsGrounded = true;
}
void OnCollisionExit(Collision collisionInfo)
{
IsGrounded = false;
}
And this is my camera script:
void Update()
{
if (axes == RotationAxes.MouseXAndY)
{
// Read the mouse input axis
rotationX += Input.GetAxis("Mouse X") * sensitivityX;
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
Quaternion yQuaternion = Quaternion.AngleAxis(rotationY, -Vector3.right);
transform.localRotation = originalRotation * xQuaternion * yQuaternion;
}
else if (axes == RotationAxes.MouseX)
{
rotationX += Input.GetAxis("Mouse X") * sensitivityX;
rotationX = ClampAngle(rotationX, minimumX, maximumX);
Quaternion xQuaternion = Quaternion.AngleAxis(rotationX, Vector3.up);
transform.localRotation = originalRotation * xQuaternion;
}
else
{
rotationY += Input.GetAxis("Mouse Y") * sensitivityY;
rotationY = ClampAngle(rotationY, minimumY, maximumY);
Quaternion yQuaternion = Quaternion.AngleAxis(-rotationY, Vector3.right);
transform.localRotation = originalRotation * yQuaternion;
}
}
void Start()
{
// Make the rigid body not change rotation
if (GetComponent<Rigidbody>())
GetComponent<Rigidbody>().freezeRotation = true;
originalRotation = transform.localRotation;
}
public static float ClampAngle(float angle, float min, float max)
{
if (angle < -360F)
angle += 360F;
if (angle > 360F)
angle -= 360F;
return Mathf.Clamp(angle, min, max);
}
Comment