diff --git a/README.md b/README.md index 9341c98..fee1792 100644 --- a/README.md +++ b/README.md @@ -2,7 +2,7 @@ # Starter Kit FPS -This package includes a basic template for a first person shooter in Godot 4.1.1.stable.official. Includes features like; +This package includes a basic template for a first person shooter in Godot 4.3 (stable). Includes features like; - Character controller - Weapons, switching weapons @@ -26,7 +26,7 @@ This package includes a basic template for a first person shooter in Godot 4.1.1 MIT License -Copyright (c) 2023 Kenney +Copyright (c) 2024 Kenney Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: diff --git a/fonts/lilita_one_regular.ttf.import b/fonts/lilita_one_regular.ttf.import index 28ca0fe..617bacb 100644 --- a/fonts/lilita_one_regular.ttf.import +++ b/fonts/lilita_one_regular.ttf.import @@ -15,6 +15,7 @@ dest_files=["res://.godot/imported/lilita_one_regular.ttf-68cc4ab6825bdd499d1ad6 Rendering=null antialiasing=1 generate_mipmaps=false +disable_embedded_bitmaps=true multichannel_signed_distance_field=false msdf_pixel_range=8 msdf_size=48 diff --git a/models/blaster-repeater.glb.import b/models/blaster-repeater.glb.import index dbcbece..2b9e464 100644 --- a/models/blaster-repeater.glb.import +++ b/models/blaster-repeater.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/blaster.glb.import b/models/blaster.glb.import index dcfb72b..d08d5ac 100644 --- a/models/blaster.glb.import +++ b/models/blaster.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/cloud.glb b/models/cloud.glb new file mode 100644 index 0000000..d96300e Binary files /dev/null and b/models/cloud.glb differ diff --git a/models/cloud.glb.import b/models/cloud.glb.import new file mode 100644 index 0000000..8520f05 --- /dev/null +++ b/models/cloud.glb.import @@ -0,0 +1,36 @@ +[remap] + +importer="scene" +importer_version=1 +type="PackedScene" +uid="uid://g2w2608bc2dy" +path="res://.godot/imported/cloud.glb-53daedc24f8d7f4baa42baf232c66643.scn" + +[deps] + +source_file="res://models/cloud.glb" +dest_files=["res://.godot/imported/cloud.glb-53daedc24f8d7f4baa42baf232c66643.scn"] + +[params] + +nodes/root_type="" +nodes/root_name="" +nodes/apply_root_scale=true +nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false +meshes/ensure_tangents=true +meshes/generate_lods=true +meshes/create_shadow_meshes=true +meshes/light_baking=1 +meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false +skins/use_named_skins=true +animation/import=true +animation/fps=30 +animation/trimming=false +animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false +import_script/path="" +_subresources={} +gltf/naming_version=1 +gltf/embedded_image_handling=1 diff --git a/models/enemy-flying.glb.import b/models/enemy-flying.glb.import index d60b0fd..087905e 100644 --- a/models/enemy-flying.glb.import +++ b/models/enemy-flying.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/grass-small.glb.import b/models/grass-small.glb.import index 842e2fc..c14e6cd 100644 --- a/models/grass-small.glb.import +++ b/models/grass-small.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/grass.glb.import b/models/grass.glb.import index ba4eec0..d605bde 100644 --- a/models/grass.glb.import +++ b/models/grass.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/platform-large-grass.glb.import b/models/platform-large-grass.glb.import index 1fdd84e..ba2d692 100644 --- a/models/platform-large-grass.glb.import +++ b/models/platform-large-grass.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/platform.glb.import b/models/platform.glb.import index 4e41171..91df3d9 100644 --- a/models/platform.glb.import +++ b/models/platform.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/wall-high.glb.import b/models/wall-high.glb.import index 9bc69b0..53b0cfa 100644 --- a/models/wall-high.glb.import +++ b/models/wall-high.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/models/wall-low.glb.import b/models/wall-low.glb.import index f995656..22b8418 100644 --- a/models/wall-low.glb.import +++ b/models/wall-low.glb.import @@ -17,16 +17,20 @@ nodes/root_type="Node3D" nodes/root_name="Scene Root" nodes/apply_root_scale=true nodes/root_scale=1.0 +nodes/import_as_skeleton_bones=false meshes/ensure_tangents=true meshes/generate_lods=true meshes/create_shadow_meshes=true meshes/light_baking=1 meshes/lightmap_texel_size=0.2 +meshes/force_disable_compression=false skins/use_named_skins=true animation/import=true animation/fps=30 animation/trimming=false animation/remove_immutable_tracks=true +animation/import_rest_as_RESET=false import_script/path="" _subresources={} +gltf/naming_version=0 gltf/embedded_image_handling=1 diff --git a/objects/cloud.gd b/objects/cloud.gd new file mode 100644 index 0000000..19757f9 --- /dev/null +++ b/objects/cloud.gd @@ -0,0 +1,19 @@ +extends Node3D + +var time = 0.0 + +var random_number = RandomNumberGenerator.new() + +var random_velocity:float +var random_time:float + +func _ready(): + + random_velocity = random_number.randf_range(0.1, 2.0) + random_time = random_number.randf_range(0.1, 2.0) + +func _process(delta): + + position.y += (cos(time * random_time) * random_velocity) * delta # Sine movement + + time += delta diff --git a/objects/cloud.tscn b/objects/cloud.tscn new file mode 100644 index 0000000..5907af9 --- /dev/null +++ b/objects/cloud.tscn @@ -0,0 +1,10 @@ +[gd_scene load_steps=3 format=3 uid="uid://oqfhfp1a80qd"] + +[ext_resource type="PackedScene" uid="uid://g2w2608bc2dy" path="res://models/cloud.glb" id="1_2mo3p"] +[ext_resource type="Script" path="res://objects/cloud.gd" id="2_rmotl"] + +[node name="cube2" instance=ExtResource("1_2mo3p")] +script = ExtResource("2_rmotl") + +[node name="cube" parent="." index="0"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.5, 0) diff --git a/project.godot b/project.godot index 9963bd0..e7d62ab 100644 --- a/project.godot +++ b/project.godot @@ -13,7 +13,7 @@ config_version=5 config/name="Starter Kit FPS" config/tags=PackedStringArray("starterkit") run/main_scene="res://scenes/main.tscn" -config/features=PackedStringArray("4.1", "Forward Plus") +config/features=PackedStringArray("4.3", "Forward Plus") boot_splash/bg_color=Color(0.92549, 0.92549, 0.960784, 1) boot_splash/image="res://splash-screen.png" config/icon="res://icon.png" @@ -36,31 +36,31 @@ movie_writer/movie_file="D:/Godot/test.avi" move_right={ "deadzone": 0.25, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":1.0,"script":null) ] } move_left={ "deadzone": 0.25, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":0,"axis_value":-1.0,"script":null) ] } move_forward={ "deadzone": 0.25, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":-1.0,"script":null) ] } move_back={ "deadzone": 0.25, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":83,"key_label":0,"unicode":115,"location":0,"echo":false,"script":null) , Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":-1,"axis":1,"axis_value":1.0,"script":null) ] } jump={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":32,"key_label":0,"unicode":32,"location":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":0,"pressure":0.0,"pressed":true,"script":null) ] } @@ -91,7 +91,7 @@ mouse_capture={ } mouse_capture_exit={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":4194305,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null) ] } shoot={ @@ -102,7 +102,7 @@ shoot={ } weapon_toggle={ "deadzone": 0.5, -"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"echo":false,"script":null) +"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) , Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"button_index":10,"pressure":0.0,"pressed":true,"script":null) ] } diff --git a/scenes/main-environment.tres b/scenes/main-environment.tres index 7f14462..d313be6 100644 --- a/scenes/main-environment.tres +++ b/scenes/main-environment.tres @@ -1,16 +1,21 @@ -[gd_resource type="Environment" load_steps=3 format=3 uid="uid://jvmpkdwaeaq"] +[gd_resource type="Environment" load_steps=5 format=3 uid="uid://jvmpkdwaeaq"] -[sub_resource type="ProceduralSkyMaterial" id="ProceduralSkyMaterial_lg8b7"] -sky_horizon_color = Color(0.67451, 0.682353, 0.698039, 1) -sky_curve = 0.0175 -ground_bottom_color = Color(1, 1, 1, 1) -ground_curve = 0.171484 +[sub_resource type="Gradient" id="Gradient_tio4a"] +colors = PackedColorArray(0.591319, 0.47222, 0.770854, 1, 0.315871, 0.421528, 0.674528, 1) + +[sub_resource type="GradientTexture2D" id="GradientTexture2D_4e6px"] +gradient = SubResource("Gradient_tio4a") +fill_to = Vector2(0, 1) + +[sub_resource type="PanoramaSkyMaterial" id="PanoramaSkyMaterial_fjheq"] +panorama = SubResource("GradientTexture2D_4e6px") [sub_resource type="Sky" id="Sky_7bk1c"] -sky_material = SubResource("ProceduralSkyMaterial_lg8b7") +sky_material = SubResource("PanoramaSkyMaterial_fjheq") +radiance_size = 0 [resource] -background_mode = 1 +background_mode = 2 background_color = Color(0.360784, 0.392157, 0.462745, 1) sky = SubResource("Sky_7bk1c") ambient_light_source = 2 diff --git a/scenes/main.tscn b/scenes/main.tscn index af4e744..48122a8 100644 --- a/scenes/main.tscn +++ b/scenes/main.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=11 format=3 uid="uid://dxvvlck8lej3f"] +[gd_scene load_steps=12 format=3 uid="uid://dxvvlck8lej3f"] [ext_resource type="Environment" uid="uid://jvmpkdwaeaq" path="res://scenes/main-environment.tres" id="1_q8fpv"] [ext_resource type="PackedScene" uid="uid://dl2ed4gkybggf" path="res://objects/player.tscn" id="2_elriq"] @@ -9,6 +9,7 @@ [ext_resource type="PackedScene" uid="uid://c71evdjblk5wp" path="res://objects/wall_high.tscn" id="7_cabne"] [ext_resource type="PackedScene" uid="uid://bvx5cvigosg0s" path="res://objects/platform_large_grass.tscn" id="7_wggef"] [ext_resource type="PackedScene" uid="uid://d2g78tpqbyf5g" path="res://objects/enemy.tscn" id="8_7ty2f"] +[ext_resource type="PackedScene" uid="uid://oqfhfp1a80qd" path="res://objects/cloud.tscn" id="10_5ksau"] [sub_resource type="LabelSettings" id="LabelSettings_fpmwk"] font = ExtResource("3_w27de") @@ -119,4 +120,37 @@ transform = Transform3D(0.965926, 0, 0.258819, 0, 1, 0, -0.258819, 0, 0.965926, [node name="Decoration" type="Node" parent="."] +[node name="cube2" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(1.49603, 0.232188, 3.70243, 1.85892, 3.40786, -0.964843, -3.21035, 2.08149, 1.16666, -9.48509, 8.49799, 20.5554) + +[node name="cube9" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(1.49603, 1.85892, -3.21035, 0.232188, 3.40786, 2.08149, 3.70243, -0.964843, 1.16666, 25.5597, 6.35221, -12.1167) + +[node name="cube5" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(3.0771, 1.12972, -2.29242, -0.0239142, 3.60054, 1.74228, 2.55556, -1.32658, 2.77656, 6.4111, 6.35221, -28.6551) + +[node name="cube3" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(2.12132, 0, 2.12132, 0, 3, 0, -2.12132, 0, 2.12132, -2.75413, 2.42683, 25.3984) + +[node name="cube10" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(0.776457, -2.89778, 2.66454e-15, 1.44889, 0.388229, -2.59808, 2.50955, 0.672432, 1.5, 27.5131, 12.0265, -5.37209) + +[node name="cube11" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(0.672432, 2.89778, -0.388229, -2.50955, 0.776457, 1.44889, 1.5, 0, 2.59808, -28.6125, 16.2998, -4.89238) + +[node name="cube12" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(0.672432, 2.89778, -0.388229, -2.50955, 0.776457, 1.44889, 1.5, 0, 2.59808, -25.14, 8.80719, -24.2564) + +[node name="cube6" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(-1.73205, 0.965926, 0.258819, -1, -1.67303, -0.448288, 0, -0.517638, 1.93185, 14.1295, 10.1139, 17.5347) + +[node name="cube7" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(1.41421, 0, -1.41421, 1, 1.41421, 1, 1, -1.41421, 1, -5.11081, 2.42683, -36.641) + +[node name="cube8" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(1.73205, 0, 1, 0, 2, 0, -1, 0, 1.73205, -30.1261, 2.42683, -13.7339) + +[node name="cube4" parent="Decoration" instance=ExtResource("10_5ksau")] +transform = Transform3D(1.12202, 1.39419, -2.40776, 1.53922, 1.85165, 1.78946, 2.31773, -1.90463, -0.0227883, -0.881504, 13.0297, -30.1859) + [connection signal="health_updated" from="Player" to="HUD" method="_on_health_updated"] diff --git a/splash-screen.png b/splash-screen.png index f1fef11..c8e5fbb 100644 Binary files a/splash-screen.png and b/splash-screen.png differ