How could i make a camera suspension like my summer car when ur in a vehicle?
1 Answer
1You can use Spring Joint and lock rotation on Camera Rigidbody,
or experiment with Cinemashine Follow or Noise behaviour.
You can also simulate this suspension by yourself in script like this:
public class Spring : MonoBehaviour
{
public Transform m_target;
public Transform m_camera;
public float m_damptingFactor = 0.9f; // Should be less than one
public float m_speed = 100;
public bool m_lockX = false;
public bool m_lockY = false;
public bool m_lockZ = true;
private Vector3 _velocity = Vector3.zero;
void Update()
{
m_camera.rotation = m_target.rotation;
Vector3 distance = m_target.position - m_camera.position;
float xMovement = Vector3.Dot(distance, m_camera.right);
float yMovement = Vector3.Dot(distance, m_camera.up);
float zMovement = Vector3.Dot(distance, m_camera.forward);
m_camera.position += (m_lockX ? (xMovement * m_camera.right) : Vector3.zero)
+ (m_lockY ? (yMovement * m_camera.up) : Vector3.zero)
+ (m_lockZ ? (zMovement * m_camera.forward) : Vector3.zero);
Vector3 local_distance = new Vector3(xMovement * (m_lockX ? 0 : 1), yMovement * (m_lockY ? 0 : 1), zMovement * (m_lockZ ? 0 : 1));
_velocity += local_distance * m_speed * Time.deltaTime;
m_camera.position += m_camera.TransformDirection(_velocity) * Time.deltaTime;
}
private void FixedUpdate()
{
_velocity *= m_damptingFactor;
}
}
Couldnt thank you enough!
– gregorkallariz