Having problems with doing a smooth isometric rotation around player
The objective is to make an isometric camera for a player that moves on a NavMesh, using the mouse. The player needs to inspect the level for clues.
I am having some trouble defining this rotation exactly how i want it. I can do a normal frame to another frame rotation of the camera around the player using RotateAround, but I wanted it to look a bit smoother so I wanted to smooth it. I am more of an artist than a programmer, so I fished some tutorials around, and the closest I got was this:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class CameraBehaviour : MonoBehaviour
{
public Transform player;
public bool LookAtPlayer = false;
public bool RotateAroundPlayer = false;
[Range(0.01f, 1.0f)]
public float smoothSpeed = 0.5f;
[Range(1.0f, 5.0f)]
public float rotationSpeed;
public Vector3 _cameraOffset;
private void Start()
{
_cameraOffset = transform.position - player.position;
}
private void LateUpdate()
{
if(RotateAroundPlayer)
{
if (Input.GetKeyDown(KeyCode.C))
{
Quaternion camTurnAngle = Quaternion.AngleAxis((transform.rotation.x -90f), player.transform.up);
_cameraOffset = camTurnAngle * _cameraOffset;
}
if (Input.GetKeyDown(KeyCode.X))
{
Quaternion camTurnAngle = Quaternion.AngleAxis((transform.rotation.x + 90f), player.transform.up);
_cameraOffset = camTurnAngle * _cameraOffset;
}
}
Vector3 newPos = player.position + _cameraOffset;
transform.position = Vector3.Slerp(transform.position, newPos, smoothSpeed);
if (LookAtPlayer || RotateAroundPlayer)
{
transform.LookAt(player);
}
}
}
Problem is, because of the camera offset (or maybe because of something I can't quite get yet) the angle of the camera never adds at the y parameter consistently, and after a few rotations it gets completely off.
Thank you for reading and I appreciate any help!.
Your answer
Follow this Question
Related Questions
Rotate ball in camera's direction.... 0 Answers
Make camera rotate around an object while keeping entire area visible 0 Answers
Creating a camera controller for isometric view - Positioning the camera 1 Answer
Rotate Unity3D FirstPersonCamera with values from Arduino in form of -127 to 127 (degrees) … 0 Answers