I’ve set up rigged player character, moved main camera inside the player object, so it is always moving together with the player and added simple camera movement script that is controlled with mouse. The script is attached to player object.
Here is the script code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class MouseLook : MonoBehaviour
{
public float mouseSensitivity = 100f;
public float minAngle = -45f;
public float maxAngle = 45f;
public float minPosition = 0f;
public float maxPosition = 6f;
public float camDefaultY = 3.198001f;
public GameObject headObject;
private float yaw = 0f;
private float pitch = 0f;
private Transform headAngle;
// Start is called before the first frame update
void Start()
{
headAngle = headObject.transform;
}
// Update is called once per frame
void Update()
{
yaw += Input.GetAxis("Mouse X") * mouseSensitivity * Time.deltaTime;
pitch -= Input.GetAxis("Mouse Y") * mouseSensitivity * Time.deltaTime;
pitch = Mathf.Clamp(pitch, minAngle, maxAngle);
transform.eulerAngles = new Vector3(0f, yaw, 0f);
headObject.transform.eulerAngles = new Vector3(-pitch, headAngle.eulerAngles.y, headAngle.eulerAngles.z);
Camera.main.transform.eulerAngles = new Vector3(pitch, yaw, 0f);
}
}
The preferred result is to:
- make player object rotate with the camera horizontally (on x axis) on mouse movement (solved)
- make player head (child object) and camera rotate vertically on mouse movement (solved)
- limit vertical camera rotation to, let’s say, 45° (solved)
- position camera vertically so the player object is always in the same place (having issue with this)
The issue I’m having is that while I got first 3 things working, I can’t find proper way to position camera vertically in a way that player object always will stay +/- in the same place/view. How can I achieve it?
Here is what I got:
And here is what I want to achieve (notice how player stays in the same place in camera):
Also I would like to know if there is maybe easier way to achieve this whole 3rd person mouse control?
Thanks in advance!