Drift Rotation

Hello, I’m in the middle of making a space simulator and i have all the spaceship controls working perfectly, Everything is smooth apart from when i “Roll” its too sudden, Is it possible to make it slowly build up rotate speed as i press the button then once released it will gradually slow down to a stop, like as if air is being forced out of the wings to stabilize the rotation. I’m just trying to make it seem as real to space as possible and this 1 tiny thing is holding me back,


function FixedUpdate(){


        if (Input.GetKey ("d")){ 

            transform.Rotate(0,0,- 1.0);


       if (Input.GetKey ("a")) {



You can add inertia to the controls using a “Lerp filter” - it’s a special trick with Lerp that smooths out the input signal, thus the ship will not start/stop rolling immediately. You should also use Time.deltaTime to have a predictable and framerate independent roll speed.

var rollSpeed = 60; // roll speed in degrees per second
var filterSpeed = 5; // how fast the filter follows the key
private var rollDir: float = 0;

function FixedUpdate(){
  if (SystemStatus){
    var rollCtrl = 0;
    if (Input.GetKey("d")) rollCtrl = -1;
    if (Input.GetKey("a")) rollCtrl = 1;
    // rollDir is a smoothed version of rollCtrl
    rollDir = Mathf.Lerp(rollDir, rollCtrl, Time.deltaTime * filterSpeed);
    // use Time.deltaTime to have a framerate independent roll speed
    transform.Rotate(0, 0, rollDir * rollSpeed * Time.deltaTime);