not sure about adding physics velocity but if you print the values of GetDirectionX() you will notice they need to be multiplied
like I have in this part of my driving game
if GetDirectionX()<=0 //-.15 //uses gyroscope for movement
moveBlocks(abs(GetDirectionX()*2.5),0,carSpeed#)
yAngle=-abs(GetDirectionX()*25)
SetObjectRotation( carBlock,0,yAngle,0 )
SetObjectRotation(carBlock+2,x1#,yAngle*2,z1#)
SetObjectRotation(carBlock+3,x1#,yAngle*2,z1#)
SetObjectRotation(carBlock+4,x1#,y1#,z1#)
SetObjectRotation(carBlock+5,x1#,y1#,z1#)
else //if GetDirectionX()>0 //>.15 //uses gyroscope for movement
moveBlocks(-abs(GetDirectionX()*2.5),0,carSpeed#)
yAngle=abs(GetDirectionX()*25)
SetObjectRotation( carBlock,0,yAngle,0 )
SetObjectRotation(carBlock+2,x1#,yangle*2,z1#) //90
SetObjectRotation(carBlock+3,x1#,yangle*2,z1#)
SetObjectRotation(carBlock+4,x1#,y1#,z1#)
SetObjectRotation(carBlock+5,x1#,y1#,z1#)
endif
full source available here
https://forum.thegamecreators.com/thread/222027
hope that helps apologies if it was something you had known
fubar