-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTrainDriver.gd
60 lines (47 loc) · 1.59 KB
/
TrainDriver.gd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
extends VehicleBody
#DEMO SCRIPT - TOTAL REWRITE REQUIRED
############################################################
# behaviour values
export var MAX_ENGINE_FORCE = 200.0
export var MAX_BRAKE_FORCE = 5.0
export var MAX_STEER_ANGLE = 0.5
export var steer_speed = 5.0
var steer_target = 0.0
var steer_angle = 0.0
############################################################
# Input
export var joy_steering = JOY_ANALOG_L2
export var steering_mult = -1.0
export var joy_throttle = JOY_ANALOG_R2
export var throttle_mult = 1.0
export var joy_brake = JOY_ANALOG_L2
export var brake_mult = 1.0
func _ready():
# Called every time the node is added to the scene.
# Initialization here
pass
func _physics_process(delta):
var steer_val = steering_mult * Input.get_joy_axis(0, joy_steering)
var throttle_val = throttle_mult * Input.get_joy_axis(0, joy_throttle)
var brake_val = brake_mult * Input.get_joy_axis(0, joy_brake)
# overrules for keyboard
if Input.is_action_pressed("ui_up"):
throttle_val = 1.0
if Input.is_action_pressed("ui_down"):
brake_val = 1.0
if Input.is_action_pressed("ui_left"):
steer_val = 1.0
elif Input.is_action_pressed("ui_right"):
steer_val = -1.0
engine_force = throttle_val * MAX_ENGINE_FORCE
brake = brake_val * MAX_BRAKE_FORCE
steer_target = steer_val * MAX_STEER_ANGLE
if (steer_target < steer_angle):
steer_angle -= steer_speed * delta
if (steer_target > steer_angle):
steer_angle = steer_target
elif (steer_target > steer_angle):
steer_angle += steer_speed * delta
if (steer_target < steer_angle):
steer_angle = steer_target
steering = steer_angle