2018-01-28 10:03:11 +01:00
|
|
|
extends VehicleBody
|
|
|
|
|
2021-02-21 19:58:36 +01:00
|
|
|
const STEER_SPEED = 1.5
|
2018-01-28 10:03:11 +01:00
|
|
|
const STEER_LIMIT = 0.4
|
|
|
|
|
|
|
|
var steer_target = 0
|
|
|
|
|
2021-02-22 02:09:05 +01:00
|
|
|
export var engine_force_value = 40
|
2018-01-28 10:03:11 +01:00
|
|
|
|
|
|
|
func _physics_process(delta):
|
2019-02-06 05:59:45 +01:00
|
|
|
var fwd_mps = transform.basis.xform_inv(linear_velocity).x
|
2020-10-01 20:23:54 +02:00
|
|
|
|
2020-01-29 23:35:14 +01:00
|
|
|
steer_target = Input.get_action_strength("turn_left") - Input.get_action_strength("turn_right")
|
|
|
|
steer_target *= STEER_LIMIT
|
2020-10-01 20:23:54 +02:00
|
|
|
|
2020-01-29 23:35:14 +01:00
|
|
|
if Input.is_action_pressed("accelerate"):
|
2021-02-22 02:09:05 +01:00
|
|
|
# Increase engine force at low speeds to make the initial acceleration faster.
|
|
|
|
var speed = linear_velocity.length()
|
|
|
|
if speed < 5 and speed != 0:
|
|
|
|
engine_force = clamp(engine_force_value * 5 / speed, 0, 100)
|
|
|
|
else:
|
|
|
|
engine_force = engine_force_value
|
2018-01-28 10:03:11 +01:00
|
|
|
else:
|
|
|
|
engine_force = 0
|
2020-10-01 20:23:54 +02:00
|
|
|
|
2020-01-29 23:35:14 +01:00
|
|
|
if Input.is_action_pressed("reverse"):
|
2021-02-22 02:09:05 +01:00
|
|
|
# Increase engine force at low speeds to make the initial acceleration faster.
|
|
|
|
if fwd_mps >= -1:
|
|
|
|
var speed = linear_velocity.length()
|
|
|
|
if speed < 5 and speed != 0:
|
|
|
|
engine_force = -clamp(engine_force_value * 5 / speed, 0, 100)
|
|
|
|
else:
|
|
|
|
engine_force = -engine_force_value
|
2019-02-06 05:59:45 +01:00
|
|
|
else:
|
|
|
|
brake = 1
|
2018-01-28 10:03:11 +01:00
|
|
|
else:
|
|
|
|
brake = 0.0
|
2020-10-01 20:23:54 +02:00
|
|
|
|
2020-03-25 18:46:42 +01:00
|
|
|
steering = move_toward(steering, steer_target, STEER_SPEED * delta)
|