dont know why but brake doesnt seem to override the engine torque
this script works but the engine doesnt stop when there is no forward or backward input?
i also want to add some antiroll physics force to make the car never roll over.
extends VehicleBody3D
@export var max_rpm = 500.0
@export var max_torque = 100.0
@export var brake_power = 3.0
@export var FLwheel = Node
@export var FRwheel = Node
@export var BLwheel = Node
@export var BRwheel = Node
var wantedsteering = 0.0
var accel = 0.0
var wantedbrake = 0.0
var braking = false
func _physics_process(delta):
if Input.is_action_pressed("jump"):
braking = true
wantedbrake = brake_power
else :
braking = false
wantedbrake = 0.0
if !braking:
if Input.is_action_pressed("forward") :
accel = lerpf(accel,1, 5 * delta)
elif Input.is_action_pressed("backward"):
accel = lerpf(accel,-1, 5 * delta)
else:
accel = 0.0
else:
accel = 0.0
if Input.is_action_pressed("right"):
wantedsteering = lerpf(wantedsteering,-1, 2 * delta)
elif Input.is_action_pressed("left"):
wantedsteering = lerpf(wantedsteering,1, 2 * delta)
else:
wantedsteering = lerpf(wantedsteering,0.0, 2 * delta)
FLwheel.steering = wantedsteering
FRwheel.steering = wantedsteering
BLwheel.steering = -wantedsteering/4
BRwheel.steering = -wantedsteering/4
var rpmFL = FLwheel.get_rpm()
FLwheel.engine_force = accel * max_torque * (1.0 - abs(rpmFL) / max_rpm)
var rpmFR = FRwheel.get_rpm()
FRwheel.engine_force = accel * max_torque * (1.0 - abs(rpmFR) / max_rpm)
var rpmBL = BLwheel.get_rpm()
BLwheel.engine_force = accel * max_torque * (1.0 - abs(rpmBL) / max_rpm)
var rpmBR = BRwheel.get_rpm()
BRwheel.engine_force = accel * max_torque * (1.0 - abs(rpmBR) / max_rpm)
FLwheel.brake = wantedbrake
FRwheel.brake = wantedbrake
BLwheel.brake = wantedbrake / 4
BRwheel.brake = wantedbrake / 4