mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-04 15:00:09 +01:00
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:
@@ -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="."]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -70,10 +70,6 @@ back={
|
||||
]
|
||||
}
|
||||
|
||||
[physics]
|
||||
|
||||
3d/default_gravity=11.0
|
||||
|
||||
[rasterizer]
|
||||
|
||||
shadow_filter=3
|
||||
|
||||
24
3d/truck_town/spedometer.gd
Normal file
24
3d/truck_town/spedometer.gd
Normal 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
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user