Add basic GUI
parent
0499ef52cd
commit
2ab280fb92
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/gauge.png-9154e7a04792a5507193a3fa8e514e90.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/gauge.png"
|
||||
dest_files=[ "res://.import/gauge.png-9154e7a04792a5507193a3fa8e514e90.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
Binary file not shown.
After Width: | Height: | Size: 1.7 KiB |
|
@ -0,0 +1,35 @@
|
|||
[remap]
|
||||
|
||||
importer="texture"
|
||||
type="StreamTexture"
|
||||
path="res://.import/needle.png-0f8fd3822e6cc0a1cd19175fda72da7b.stex"
|
||||
metadata={
|
||||
"vram_texture": false
|
||||
}
|
||||
|
||||
[deps]
|
||||
|
||||
source_file="res://assets/needle.png"
|
||||
dest_files=[ "res://.import/needle.png-0f8fd3822e6cc0a1cd19175fda72da7b.stex" ]
|
||||
|
||||
[params]
|
||||
|
||||
compress/mode=0
|
||||
compress/lossy_quality=0.7
|
||||
compress/hdr_mode=0
|
||||
compress/bptc_ldr=0
|
||||
compress/normal_map=0
|
||||
flags/repeat=0
|
||||
flags/filter=true
|
||||
flags/mipmaps=false
|
||||
flags/anisotropic=false
|
||||
flags/srgb=2
|
||||
process/fix_alpha_border=true
|
||||
process/premult_alpha=false
|
||||
process/HDR_as_SRGB=false
|
||||
process/invert_color=false
|
||||
process/normal_map_invert_y=false
|
||||
stream=false
|
||||
size_limit=0
|
||||
detect_3d=true
|
||||
svg/scale=1.0
|
|
@ -0,0 +1,26 @@
|
|||
extends MarginContainer
|
||||
|
||||
|
||||
onready var rpm_needle = $HBoxContainer/RPMGauge/RPMNeedle
|
||||
onready var speed_needle = $HBoxContainer/SpeedGauge/SpeedNeedle
|
||||
onready var gear_label = $HBoxContainer/GearLabel
|
||||
|
||||
var min_rotation = -85
|
||||
var max_rotation = 75
|
||||
|
||||
func _get_rotation(percent: float) -> float:
|
||||
return min_rotation + (max_rotation - min_rotation) * percent
|
||||
|
||||
func update_speed(speed_percent: float) -> void:
|
||||
speed_needle.rect_rotation = _get_rotation(speed_percent)
|
||||
|
||||
func update_rpm(rpm_percent: float) -> void:
|
||||
rpm_needle.rect_rotation = _get_rotation(rpm_percent)
|
||||
|
||||
func update_gear(gear: int) -> void:
|
||||
if gear == -1:
|
||||
gear_label.text = "R"
|
||||
elif gear == 0:
|
||||
gear_label.text = "N"
|
||||
else:
|
||||
gear_label.text = str(gear)
|
|
@ -0,0 +1,82 @@
|
|||
[gd_scene load_steps=7 format=2]
|
||||
|
||||
[ext_resource path="res://assets/gauge.png" type="Texture" id=1]
|
||||
[ext_resource path="res://assets/needle.png" type="Texture" id=2]
|
||||
[ext_resource path="res://player/gui.gd" type="Script" id=3]
|
||||
[ext_resource path="res://assets/fonts/kenney-future-narrow.ttf" type="DynamicFontData" id=4]
|
||||
|
||||
[sub_resource type="CanvasItemMaterial" id=3]
|
||||
|
||||
[sub_resource type="DynamicFont" id=1]
|
||||
size = 48
|
||||
font_data = ExtResource( 4 )
|
||||
|
||||
[node name="GUIContainer" type="MarginContainer"]
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
margin_left = 20.0
|
||||
margin_top = 20.0
|
||||
margin_right = -20.0
|
||||
margin_bottom = -20.0
|
||||
script = ExtResource( 3 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="HBoxContainer" type="HBoxContainer" parent="."]
|
||||
material = SubResource( 3 )
|
||||
margin_top = 432.0
|
||||
margin_right = 318.0
|
||||
margin_bottom = 560.0
|
||||
size_flags_horizontal = 0
|
||||
size_flags_vertical = 8
|
||||
custom_constants/separation = 20
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="RPMGauge" type="TextureRect" parent="HBoxContainer"]
|
||||
margin_right = 128.0
|
||||
margin_bottom = 128.0
|
||||
texture = ExtResource( 1 )
|
||||
|
||||
[node name="RPMNeedle" type="TextureRect" parent="HBoxContainer/RPMGauge"]
|
||||
margin_left = 54.0
|
||||
margin_top = 11.0
|
||||
margin_right = 72.0
|
||||
margin_bottom = 66.0
|
||||
rect_pivot_offset = Vector2( 9, 50 )
|
||||
size_flags_horizontal = 5
|
||||
size_flags_vertical = 5
|
||||
texture = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="SpeedGauge" type="TextureRect" parent="HBoxContainer"]
|
||||
margin_left = 148.0
|
||||
margin_right = 276.0
|
||||
margin_bottom = 128.0
|
||||
texture = ExtResource( 1 )
|
||||
|
||||
[node name="SpeedNeedle" type="TextureRect" parent="HBoxContainer/SpeedGauge"]
|
||||
margin_left = 54.0
|
||||
margin_top = 11.0
|
||||
margin_right = 72.0
|
||||
margin_bottom = 66.0
|
||||
rect_pivot_offset = Vector2( 9, 50 )
|
||||
size_flags_horizontal = 5
|
||||
size_flags_vertical = 5
|
||||
texture = ExtResource( 2 )
|
||||
__meta__ = {
|
||||
"_edit_use_anchors_": false
|
||||
}
|
||||
|
||||
[node name="GearLabel" type="Label" parent="HBoxContainer"]
|
||||
margin_left = 296.0
|
||||
margin_top = 37.0
|
||||
margin_right = 318.0
|
||||
margin_bottom = 91.0
|
||||
custom_colors/font_color = Color( 0.282353, 0.0196078, 0.0196078, 1 )
|
||||
custom_fonts/font = SubResource( 1 )
|
||||
text = "1"
|
|
@ -3,6 +3,7 @@ extends Panel
|
|||
const buggy = preload("res://vehicles/buggy.tscn")
|
||||
const beetle = preload("res://vehicles/beetlecar.tscn")
|
||||
const test_scene = preload("res://scenes/test_level.tscn")
|
||||
const gui_scene = preload("res://player/gui.tscn")
|
||||
|
||||
func _on_BuggyButton_pressed() -> void:
|
||||
_start_with_vehicle(buggy.instance())
|
||||
|
@ -11,8 +12,12 @@ func _on_BeetleButton_pressed() -> void:
|
|||
_start_with_vehicle(beetle.instance())
|
||||
|
||||
func _start_with_vehicle(vehicle: Node) -> void:
|
||||
var gui = gui_scene.instance()
|
||||
var scene = test_scene.instance()
|
||||
scene.call_deferred("spawn_player", vehicle)
|
||||
vehicle.connect("speed_updated", gui, "update_speed")
|
||||
vehicle.connect("rpm_updated", gui, "update_rpm")
|
||||
vehicle.connect("gear_updated", gui, "update_gear")
|
||||
scene.call_deferred("spawn_player", vehicle, gui)
|
||||
get_tree().root.call_deferred("add_child", scene)
|
||||
queue_free()
|
||||
|
||||
|
|
|
@ -3,13 +3,16 @@ extends Spatial
|
|||
const camera = preload("res://player/camera.tscn")
|
||||
onready var spawn_point = $PlayerSpawnLocation
|
||||
var player_node: Node
|
||||
var gui: Node
|
||||
|
||||
func _ready() -> void:
|
||||
player_node.global_transform = spawn_point.global_transform
|
||||
add_child(player_node)
|
||||
add_child(gui)
|
||||
var player_camera = camera.instance()
|
||||
player_camera.follow_target_path = player_node.get_path()
|
||||
add_child(player_camera)
|
||||
|
||||
func spawn_player(player_node: Node) -> void:
|
||||
func spawn_player(player_node: Node, gui: Node) -> void:
|
||||
self.player_node = player_node
|
||||
self.gui = gui
|
||||
|
|
|
@ -44,6 +44,7 @@ rings = 3
|
|||
[node name="beetlecar" instance=ExtResource( 2 )]
|
||||
mass = 140.0
|
||||
script = ExtResource( 1 )
|
||||
EXPECTED_MAX_SPEED = 180.0
|
||||
gear_ratios = [ 2.95, 2.2, 1.76, 1.43, 1.25, 1.0 ]
|
||||
final_drive = 5.0
|
||||
max_rpm = 8000.0
|
||||
|
|
|
@ -1,5 +1,9 @@
|
|||
extends VehicleBody
|
||||
|
||||
signal speed_updated(speed_percent)
|
||||
signal rpm_updated(rpm_percent)
|
||||
signal gear_updated(gear)
|
||||
|
||||
export (float) var MAX_STEER_ANGLE = 25
|
||||
export (float) var SPEED_STEER_ANGLE = 10
|
||||
export (float) var MAX_STEER_SPEED = 100.0
|
||||
|
@ -15,6 +19,7 @@ export (float) var MAX_BRAKE_FORCE = 50.0
|
|||
export (float) var THROTTLE_POWER = 6000.0
|
||||
export (float) var MAX_RPM_LOSS_PS = 3000.0
|
||||
export (float) var BASE_ENGINE_PITCH = 0.5
|
||||
export (float) var EXPECTED_MAX_SPEED = 200
|
||||
|
||||
export (Array) var gear_ratios = [ 3.4, 2.5, 2.0, 1.5, 1.25 ]
|
||||
export (float) var reverse_ratio = -3
|
||||
|
@ -69,10 +74,12 @@ func _handle_gear_switch(delta: float):
|
|||
if gear + 1 <= gear_ratios.size():
|
||||
gear += 1
|
||||
gear_timer = gear_switch_time * (2 - clutch_position)
|
||||
emit_signal("gear_updated", gear)
|
||||
if Input.is_action_just_pressed("gear_down"):
|
||||
if gear - 1 >= -1:
|
||||
gear -= 1
|
||||
gear_timer = gear_switch_time * (2 - clutch_position)
|
||||
emit_signal("gear_updated", gear)
|
||||
|
||||
func _has_traction():
|
||||
for wheel in traction_wheels:
|
||||
|
@ -132,6 +139,8 @@ func _physics_process(delta: float):
|
|||
rlwheel.brake = handbrake * MAX_BRAKE_FORCE / 2
|
||||
|
||||
var speed = wheel_rpm * 2.0 * PI * rrwheel.wheel_radius / 60.0 * 3600.0 / 1000.0
|
||||
emit_signal("speed_updated", speed / EXPECTED_MAX_SPEED)
|
||||
emit_signal("rpm_updated", rpm_factor)
|
||||
$Info.text = "Gear: %d, KPH: %.0f, RPM: %.0f, WheelRPM: %.0f, FinalRPM: %.0f, TRPM: %.0f, Engine force: %.0f" % [ gear, speed, rpm, wheel_rpm, final_rpm, transmission_rpm, engine_force ]
|
||||
|
||||
var steering_input = Input.get_action_strength("steer_left") - Input.get_action_strength("steer_right")
|
||||
|
|
Loading…
Reference in New Issue