Unity My summer car camera suspension

How could i make a camera suspension like my summer car when ur in a vehicle?

1 Answer

1

You 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!

–