2018-01-28 10:03:11 +01:00
|
|
|
extends VehicleBody
|
|
|
|
|
|
|
|
# Member variables
|
|
|
|
const STEER_SPEED = 1
|
|
|
|
const STEER_LIMIT = 0.4
|
|
|
|
|
|
|
|
var steer_angle = 0
|
|
|
|
var steer_target = 0
|
|
|
|
|
|
|
|
export var engine_force_value = 40
|
|
|
|
|
|
|
|
func _physics_process(delta):
|
2019-02-06 05:59:45 +01:00
|
|
|
var fwd_mps = transform.basis.xform_inv(linear_velocity).x
|
|
|
|
|
2018-03-14 05:52:41 +01:00
|
|
|
if Input.is_action_pressed("ui_left"):
|
2018-01-28 10:03:11 +01:00
|
|
|
steer_target = STEER_LIMIT
|
2018-03-14 05:52:41 +01:00
|
|
|
elif Input.is_action_pressed("ui_right"):
|
2018-01-28 10:03:11 +01:00
|
|
|
steer_target = -STEER_LIMIT
|
|
|
|
else:
|
|
|
|
steer_target = 0
|
|
|
|
|
2018-03-14 05:52:41 +01:00
|
|
|
if Input.is_action_pressed("ui_up"):
|
2018-01-28 10:03:11 +01:00
|
|
|
engine_force = engine_force_value
|
|
|
|
else:
|
|
|
|
engine_force = 0
|
|
|
|
|
2018-03-14 05:52:41 +01:00
|
|
|
if Input.is_action_pressed("ui_down"):
|
2019-02-06 05:59:45 +01:00
|
|
|
if (fwd_mps >= -1):
|
|
|
|
engine_force = -engine_force_value
|
|
|
|
else:
|
|
|
|
brake = 1
|
2018-01-28 10:03:11 +01:00
|
|
|
else:
|
|
|
|
brake = 0.0
|
|
|
|
|
2018-03-14 05:52:41 +01:00
|
|
|
if steer_target < steer_angle:
|
|
|
|
steer_angle -= STEER_SPEED * delta
|
|
|
|
if steer_target > steer_angle:
|
2018-01-28 10:03:11 +01:00
|
|
|
steer_angle = steer_target
|
2018-03-14 05:52:41 +01:00
|
|
|
elif steer_target > steer_angle:
|
|
|
|
steer_angle += STEER_SPEED * delta
|
|
|
|
if steer_target < steer_angle:
|
2018-01-28 10:03:11 +01:00
|
|
|
steer_angle = steer_target
|
|
|
|
|
|
|
|
steering = steer_angle
|