Use a higher engine force when slow and add a spedometer in Truck Town

Co-authored-by: Hugo Locurcio <hugo.locurcio@hugo.pro>
This commit is contained in:
Aaron Franke
2021-02-21 20:09:05 -05:00
parent feaf406fee
commit 10a7e3d301
8 changed files with 67 additions and 14 deletions

View File

@@ -122,7 +122,6 @@ __meta__ = {
[node name="Body" type="VehicleBody" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00169557, 0.222867, -0.0955184 )
physics_material_override = SubResource( 1 )
engine_force = 40.0
script = ExtResource( 1 )
[node name="Wheel1" type="VehicleWheel" parent="Body"]
@@ -208,7 +207,6 @@ fov = 74.0
near = 0.1
script = ExtResource( 5 )
min_distance = 3.0
max_distance = 4.0
height = 1.25
[node name="AnimationPlayer" type="AnimationPlayer" parent="."]

View File

@@ -48,7 +48,6 @@ margin_bottom = 400.0
size_flags_horizontal = 2
size_flags_vertical = 2
icon = ExtResource( 4 )
[connection signal="pressed" from="MiniVan" to="." method="_on_MiniVan_pressed"]
[connection signal="pressed" from="TrailerTruck" to="." method="_on_TrailerTruck_pressed"]
[connection signal="pressed" from="TowTruck" to="." method="_on_TowTruck_pressed"]

View File

@@ -70,10 +70,6 @@ back={
]
}
[physics]
3d/default_gravity=11.0
[rasterizer]
shadow_filter=3

View File

@@ -0,0 +1,24 @@
extends Button
enum SpeedUnit {
METERS_PER_SECOND = 0,
KILOMETERS_PER_HOUR = 1,
MILES_PER_HOUR = 2,
}
export(SpeedUnit) var speed_unit = 0
func _process(_delta):
var speed = get_parent().get_parent().get_child(1).get_child(0).linear_velocity.length()
if speed_unit == SpeedUnit.METERS_PER_SECOND:
text = "Speed: " + ("%.1f" % speed) + " m/s"
elif speed_unit == SpeedUnit.KILOMETERS_PER_HOUR:
speed *= 3.6
text = "Speed: " + ("%.0f" % speed) + " km/h"
else: # speed_unit == SpeedUnit.MILES_PER_HOUR:
speed *= 2.23694
text = "Speed: " + ("%.0f" % speed) + " mph"
func _on_Spedometer_pressed():
speed_unit = (speed_unit + 1) % 3

View File

@@ -255,7 +255,6 @@ __meta__ = {
[node name="Body" type="VehicleBody" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00169557, 0.222867, -0.0955184 )
engine_force = 40.0
script = ExtResource( 1 )
[node name="Wheel1" type="VehicleWheel" parent="Body"]

View File

@@ -1,6 +1,12 @@
[gd_scene load_steps=2 format=2]
[gd_scene load_steps=5 format=2]
[ext_resource path="res://town_mesh.tscn" type="PackedScene" id=1]
[ext_resource path="res://spedometer.gd" type="Script" id=2]
[sub_resource type="StyleBoxEmpty" id=1]
[sub_resource type="Theme" id=2]
Button/styles/focus = SubResource( 1 )
[node name="TownScene" type="Spatial"]
@@ -9,6 +15,27 @@
[node name="InstancePos" type="Position3D" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, 13.2039, 6.67095, -37.6042 )
[node name="Panel" type="Panel" parent="InstancePos"]
anchor_left = 1.0
anchor_right = 1.0
margin_left = -130.0
margin_bottom = 40.0
rect_min_size = Vector2( 120, 40 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Spedometer" type="Button" parent="InstancePos/Panel"]
anchor_right = 1.0
anchor_bottom = 1.0
theme = SubResource( 2 )
text = "Speed: ???"
flat = true
script = ExtResource( 2 )
__meta__ = {
"_edit_use_anchors_": false
}
[node name="Back" type="Button" parent="."]
margin_left = 17.0
margin_top = 9.0
@@ -19,3 +46,4 @@ text = "<- Back!"
[node name="DirectionalLight" type="DirectionalLight" parent="."]
transform = Transform( 1, 0, 0, 0, -0.629475, 0.777021, 0, -0.777021, -0.629475, 0, 24.4076, 0 )
shadow_enabled = true
[connection signal="pressed" from="InstancePos/Panel/Spedometer" to="InstancePos/Panel/Spedometer" method="_on_Spedometer_pressed"]

View File

@@ -299,7 +299,6 @@ shape = SubResource( 6 )
[node name="Body" type="VehicleBody" parent="."]
transform = Transform( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.00169557, 0.222867, -0.0955184 )
engine_force = 200.0
script = ExtResource( 4 )
[node name="Wheel1" type="VehicleWheel" parent="Body"]

View File

@@ -5,7 +5,7 @@ const STEER_LIMIT = 0.4
var steer_target = 0
export var engine_force_value = 85
export var engine_force_value = 40
func _physics_process(delta):
var fwd_mps = transform.basis.xform_inv(linear_velocity).x
@@ -14,13 +14,23 @@ func _physics_process(delta):
steer_target *= STEER_LIMIT
if Input.is_action_pressed("accelerate"):
engine_force = engine_force_value
# 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
else:
engine_force = 0
if Input.is_action_pressed("reverse"):
if (fwd_mps >= -1):
engine_force = -engine_force_value
# 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
else:
brake = 1
else: