- Home /
Orbit cam and Rigidbodies aiming
I've been trying to create a orbit cam that also aims a ship but I'm running into minor issues. At slow turning speeds the ship jitters.
Working behavior on broad turns:
Camera code:
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class OrbitFollow : MonoBehaviour {
public Transform target;
Quaternion finalRotation;
Vector3 finalPos;
float distance = 10.0f;
float distanceMin = 3f;
float distanceMax = 15f;
float x, y, dx, dy;
private void Update()
{
//Rotation
Cursor.lockState = CursorLockMode.Locked;
x += Input.GetAxisRaw("Mouse X") * 2f;
y -= Input.GetAxisRaw("Mouse Y") * 2f;
finalRotation = transform.localRotation * Quaternion.Euler(y - dy, x - dx, 0);
dx = x;
dy = y;
transform.rotation = Quaternion.Lerp(transform.rotation, finalRotation, 100f * Time.deltaTime);
}
private void LateUpdate()
{
//Position
distance = Mathf.Clamp(distance - Input.GetAxis("Mouse ScrollWheel") * 5, distanceMin, distanceMax);
RaycastHit hit;
if (Physics.Linecast(target.position, transform.position, out hit, 7))
{
distance -= hit.distance;
}
finalPos = target.position + transform.rotation * new Vector3(0, 3*(distance/distanceMax + 0.25f), -distance);
transform.position = finalPos; Vector3.Lerp(transform.position, finalPos, 5f * Time.deltaTime);
}
}
Rigidbody's rotation code:
//Rotation
if (driveCam){
Quaternion newRot = Quaternion.RotateTowards(rb.rotation, driveCam.transform.rotation, 1);
rb.MoveRotation(Quaternion.Lerp(rb.rotation,newRot, turnSpeed*turnSpeedModifier* Time.deltaTime));
}
I need the rigidbody to turn at a constant rate regardless of how far ahead the camera is
Comment