Skip to content

Commit 10a7e3d

Browse files
aaronfrankeCalinou
andcommitted
Use a higher engine force when slow and add a spedometer in Truck Town
Co-authored-by: Hugo Locurcio <[email protected]>
1 parent feaf406 commit 10a7e3d

File tree

8 files changed

+67
-14
lines changed

8 files changed

+67
-14
lines changed

3d/truck_town/car_base.tscn

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,6 @@ __meta__ = {
122122
[node name="Body" type="VehicleBody" parent="."]
123123
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00169557, 0.222867, -0.0955184 )
124124
physics_material_override = SubResource( 1 )
125-
engine_force = 40.0
126125
script = ExtResource( 1 )
127126

128127
[node name="Wheel1" type="VehicleWheel" parent="Body"]
@@ -208,7 +207,6 @@ fov = 74.0
208207
near = 0.1
209208
script = ExtResource( 5 )
210209
min_distance = 3.0
211-
max_distance = 4.0
212210
height = 1.25
213211

214212
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]

3d/truck_town/car_select.tscn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,6 @@ margin_bottom = 400.0
4848
size_flags_horizontal = 2
4949
size_flags_vertical = 2
5050
icon = ExtResource( 4 )
51-
5251
[connection signal="pressed" from="MiniVan" to="." method="_on_MiniVan_pressed"]
5352
[connection signal="pressed" from="TrailerTruck" to="." method="_on_TrailerTruck_pressed"]
5453
[connection signal="pressed" from="TowTruck" to="." method="_on_TowTruck_pressed"]

3d/truck_town/project.godot

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,10 +70,6 @@ back={
7070
]
7171
}
7272

73-
[physics]
74-
75-
3d/default_gravity=11.0
76-
7773
[rasterizer]
7874

7975
shadow_filter=3

3d/truck_town/spedometer.gd

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
extends Button
2+
3+
enum SpeedUnit {
4+
METERS_PER_SECOND = 0,
5+
KILOMETERS_PER_HOUR = 1,
6+
MILES_PER_HOUR = 2,
7+
}
8+
9+
export(SpeedUnit) var speed_unit = 0
10+
11+
func _process(_delta):
12+
var speed = get_parent().get_parent().get_child(1).get_child(0).linear_velocity.length()
13+
if speed_unit == SpeedUnit.METERS_PER_SECOND:
14+
text = "Speed: " + ("%.1f" % speed) + " m/s"
15+
elif speed_unit == SpeedUnit.KILOMETERS_PER_HOUR:
16+
speed *= 3.6
17+
text = "Speed: " + ("%.0f" % speed) + " km/h"
18+
else: # speed_unit == SpeedUnit.MILES_PER_HOUR:
19+
speed *= 2.23694
20+
text = "Speed: " + ("%.0f" % speed) + " mph"
21+
22+
23+
func _on_Spedometer_pressed():
24+
speed_unit = (speed_unit + 1) % 3

3d/truck_town/tow_truck.tscn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -255,7 +255,6 @@ __meta__ = {
255255

256256
[node name="Body" type="VehicleBody" parent="."]
257257
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00169557, 0.222867, -0.0955184 )
258-
engine_force = 40.0
259258
script = ExtResource( 1 )
260259

261260
[node name="Wheel1" type="VehicleWheel" parent="Body"]

3d/truck_town/town_scene.tscn

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,12 @@
1-
[gd_scene load_steps=2 format=2]
1+
[gd_scene load_steps=5 format=2]
22

33
[ext_resource path="res://town_mesh.tscn" type="PackedScene" id=1]
4+
[ext_resource path="res://spedometer.gd" type="Script" id=2]
5+
6+
[sub_resource type="StyleBoxEmpty" id=1]
7+
8+
[sub_resource type="Theme" id=2]
9+
Button/styles/focus = SubResource( 1 )
410

511
[node name="TownScene" type="Spatial"]
612

@@ -9,6 +15,27 @@
915
[node name="InstancePos" type="Position3D" parent="."]
1016
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 13.2039, 6.67095, -37.6042 )
1117

18+
[node name="Panel" type="Panel" parent="InstancePos"]
19+
anchor_left = 1.0
20+
anchor_right = 1.0
21+
margin_left = -130.0
22+
margin_bottom = 40.0
23+
rect_min_size = Vector2( 120, 40 )
24+
__meta__ = {
25+
"_edit_use_anchors_": false
26+
}
27+
28+
[node name="Spedometer" type="Button" parent="InstancePos/Panel"]
29+
anchor_right = 1.0
30+
anchor_bottom = 1.0
31+
theme = SubResource( 2 )
32+
text = "Speed: ???"
33+
flat = true
34+
script = ExtResource( 2 )
35+
__meta__ = {
36+
"_edit_use_anchors_": false
37+
}
38+
1239
[node name="Back" type="Button" parent="."]
1340
margin_left = 17.0
1441
margin_top = 9.0
@@ -19,3 +46,4 @@ text = "<- Back!"
1946
[node name="DirectionalLight" type="DirectionalLight" parent="."]
2047
transform = Transform( 1, 0, 0, 0, -0.629475, 0.777021, 0, -0.777021, -0.629475, 0, 24.4076, 0 )
2148
shadow_enabled = true
49+
[connection signal="pressed" from="InstancePos/Panel/Spedometer" to="InstancePos/Panel/Spedometer" method="_on_Spedometer_pressed"]

3d/truck_town/trailer_truck.tscn

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -299,7 +299,6 @@ shape = SubResource( 6 )
299299

300300
[node name="Body" type="VehicleBody" parent="."]
301301
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00169557, 0.222867, -0.0955184 )
302-
engine_force = 200.0
303302
script = ExtResource( 4 )
304303

305304
[node name="Wheel1" type="VehicleWheel" parent="Body"]

3d/truck_town/vehicle.gd

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ const STEER_LIMIT = 0.4
55

66
var steer_target = 0
77

8-
export var engine_force_value = 85
8+
export var engine_force_value = 40
99

1010
func _physics_process(delta):
1111
var fwd_mps = transform.basis.xform_inv(linear_velocity).x
@@ -14,13 +14,23 @@ func _physics_process(delta):
1414
steer_target *= STEER_LIMIT
1515

1616
if Input.is_action_pressed("accelerate"):
17-
engine_force = engine_force_value
17+
# Increase engine force at low speeds to make the initial acceleration faster.
18+
var speed = linear_velocity.length()
19+
if speed < 5 and speed != 0:
20+
engine_force = clamp(engine_force_value * 5 / speed, 0, 100)
21+
else:
22+
engine_force = engine_force_value
1823
else:
1924
engine_force = 0
2025

2126
if Input.is_action_pressed("reverse"):
22-
if (fwd_mps >= -1):
23-
engine_force = -engine_force_value
27+
# Increase engine force at low speeds to make the initial acceleration faster.
28+
if fwd_mps >= -1:
29+
var speed = linear_velocity.length()
30+
if speed < 5 and speed != 0:
31+
engine_force = -clamp(engine_force_value * 5 / speed, 0, 100)
32+
else:
33+
engine_force = -engine_force_value
2434
else:
2535
brake = 1
2636
else:

0 commit comments

Comments
 (0)