diff --git a/.gitignore b/.gitignore index 3ca43ae..4709183 100644 --- a/.gitignore +++ b/.gitignore @@ -1,16 +1,2 @@ -# ---> Rust -# Generated by Cargo -# will have compiled files and executables -debug/ -target/ - -# Remove Cargo.lock from gitignore if creating an executable, leave it for libraries -# More information here https://doc.rust-lang.org/cargo/guide/cargo-toml-vs-cargo-lock.html -Cargo.lock - -# These are backup files generated by rustfmt -**/*.rs.bk - -# MSVC Windows builds of rustc generate these, which store debugging information -*.pdb - +# Godot 4+ specific ignores +.godot/ diff --git a/.godot/editor/character.tscn-editstate-6c6dc7b19bcca4fde1d18f935dfc6115.cfg b/.godot/editor/character.tscn-editstate-6c6dc7b19bcca4fde1d18f935dfc6115.cfg index 58ffc78..30a204e 100644 --- a/.godot/editor/character.tscn-editstate-6c6dc7b19bcca4fde1d18f935dfc6115.cfg +++ b/.godot/editor/character.tscn-editstate-6c6dc7b19bcca4fde1d18f935dfc6115.cfg @@ -100,7 +100,7 @@ Anim={ "auto_orthogonal_enabled": true, "cinematic_preview": false, "display_mode": 21, -"distance": 7.6359, +"distance": 7.29419, "doppler": false, "frame_time": false, "gizmos": true, @@ -112,8 +112,8 @@ Anim={ "position": Vector3(0, 0, 0), "use_environment": false, "view_type": 0, -"x_rotation": 0.382451, -"y_rotation": -1.58645 +"x_rotation": 0.368837, +"y_rotation": -1.68593 }, { "auto_orthogonal": false, "auto_orthogonal_enabled": true, @@ -175,4 +175,4 @@ Anim={ "zfar": 4000.01, "znear": 0.05 } -selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16894/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9280/@VSplitContainer@9102/@HSplitContainer@9104/@HSplitContainer@9106/@Control@9107/@SubViewportContainer@9108/@SubViewport@9109/Character/CharacterBody3D/Body/CameraMount")]) +selected_nodes=Array[NodePath]([NodePath("/root/@EditorNode@16894/@Panel@13/@VBoxContainer@14/DockHSplitLeftL/DockHSplitLeftR/DockHSplitMain/@VBoxContainer@25/DockVSplitCenter/@VSplitContainer@52/@VBoxContainer@53/@PanelContainer@98/MainScreen/@CanvasItemEditor@9280/@VSplitContainer@9102/@HSplitContainer@9104/@HSplitContainer@9106/@Control@9107/@SubViewportContainer@9108/@SubViewport@9109/Character/CharacterBody3D/Body/CameraMount/Camera")]) diff --git a/.godot/editor/character.tscn-folding-6c6dc7b19bcca4fde1d18f935dfc6115.cfg b/.godot/editor/character.tscn-folding-6c6dc7b19bcca4fde1d18f935dfc6115.cfg index 3976a08..2f6ec5c 100644 --- a/.godot/editor/character.tscn-folding-6c6dc7b19bcca4fde1d18f935dfc6115.cfg +++ b/.godot/editor/character.tscn-folding-6c6dc7b19bcca4fde1d18f935dfc6115.cfg @@ -1,5 +1,5 @@ [folding] node_unfolds=[NodePath("CharacterBody3D/Body/CameraMount"), PackedStringArray("Transform"), NodePath("CharacterBody3D/Body/CameraMount/Camera"), PackedStringArray("Transform")] -resource_unfolds=["res://scenes/utils/character.tscn::CylinderShape3D_1sre5", PackedStringArray()] +resource_unfolds=["res://scenes/utils/character.tscn::StandardMaterial3D_m6bjf", PackedStringArray(), "res://scenes/utils/character.tscn::CylinderShape3D_1sre5", PackedStringArray()] nodes_folded=[] diff --git a/.godot/editor/character_controller.gd-folding-35762e3a211429402749af102136c554.cfg b/.godot/editor/character_controller.gd-folding-35762e3a211429402749af102136c554.cfg new file mode 100644 index 0000000..e860dd4 --- /dev/null +++ b/.godot/editor/character_controller.gd-folding-35762e3a211429402749af102136c554.cfg @@ -0,0 +1,3 @@ +[folding] + +sections_unfolded=PackedStringArray() diff --git a/.godot/editor/editor_layout.cfg b/.godot/editor/editor_layout.cfg index 418c260..b350b99 100644 --- a/.godot/editor/editor_layout.cfg +++ b/.godot/editor/editor_layout.cfg @@ -17,8 +17,8 @@ dock_filesystem_v_split_offset=0 dock_filesystem_display_mode=0 dock_filesystem_file_sort=0 dock_filesystem_file_list_display_mode=1 -dock_filesystem_selected_paths=PackedStringArray("res://scenes/utils/character.tscn") -dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scenes/", "res://scenes/utils/", "res://addons/", "res://addons/kenney_prototype_textures/orange/") +dock_filesystem_selected_paths=PackedStringArray("res://scripts/character_controller.gd") +dock_filesystem_uncollapsed_paths=PackedStringArray("Favorites", "res://", "res://scripts/", "res://scenes/", "res://scenes/utils/", "res://addons/", "res://addons/kenney_prototype_textures/", "res://addons/kenney_prototype_textures/orange/") dock_3="Scene,Import" dock_4="FileSystem" dock_5="Inspector,Node,History" @@ -29,13 +29,13 @@ open_scenes=PackedStringArray("res://scenes/utils/character.tscn") current_scene="res://scenes/utils/character.tscn" center_split_offset=0 selected_default_debugger_tab_idx=0 -selected_main_editor_idx=2 +selected_main_editor_idx=1 selected_bottom_panel_item=0 [ScriptEditor] -open_scripts=["res://scenes/utils/character_body_3d.gd"] -selected_script="res://scenes/utils/character_body_3d.gd" +open_scripts=["res://scripts/character_controller.gd"] +selected_script="res://scripts/character_controller.gd" open_help=[] script_split_offset=140 list_split_offset=0 diff --git a/.godot/editor/filesystem_cache8 b/.godot/editor/filesystem_cache8 index e1e332a..1dba84b 100644 --- a/.godot/editor/filesystem_cache8 +++ b/.godot/editor/filesystem_cache8 @@ -1,99 +1,99 @@ ea4bc82a6ad023ab7ee23ee620429895 -::res://::1737037070 +::res://::1737038845 icon.svg::CompressedTexture2D::6293334859799825849::1736869462::1737029434::1::::<><>:: README.md::TextFile::-1::1736782425::0::1::::<><>:: ::res://addons/::1737029345 ::res://addons/kenney_prototype_textures/::1736869689 LICENSE.txt::TextFile::-1::1736869688::0::1::::<><>:: -::res://addons/kenney_prototype_textures/dark/::1737029953 -texture_01.png::CompressedTexture2D::8014208326336467885::1736869688::1737029950::1::::<><>:: -texture_02.png::CompressedTexture2D::2432288388540315486::1736869688::1736869689::1::::<><>:: -texture_03.png::CompressedTexture2D::718984629790284706::1736869688::1736869689::1::::<><>:: -texture_04.png::CompressedTexture2D::341418743939086096::1736869688::1737029953::1::::<><>:: -texture_05.png::CompressedTexture2D::7351723646777413688::1736869688::1736869689::1::::<><>:: -texture_06.png::CompressedTexture2D::8615009470155375539::1736869688::1736869689::1::::<><>:: -texture_07.png::CompressedTexture2D::2874041732111591054::1736869688::1736869689::1::::<><>:: -texture_08.png::CompressedTexture2D::1035326817980762041::1736869688::1736869689::1::::<><>:: -texture_09.png::CompressedTexture2D::6407493781882021197::1736869688::1736869689::1::::<><>:: -texture_10.png::CompressedTexture2D::970016071898969561::1736869688::1736869689::1::::<><>:: -texture_11.png::CompressedTexture2D::5381106305644616509::1736869688::1736869689::1::::<><>:: -texture_12.png::CompressedTexture2D::8434509427464472327::1736869688::1736869689::1::::<><>:: -texture_13.png::CompressedTexture2D::7788556782362452097::1736869688::1736869689::1::::<><>:: -::res://addons/kenney_prototype_textures/green/::1736869689 -texture_01.png::CompressedTexture2D::3591690079457645626::1736869688::1736869689::1::::<><>:: -texture_02.png::CompressedTexture2D::1698616428607644272::1736869688::1736869689::1::::<><>:: -texture_03.png::CompressedTexture2D::265155403077655284::1736869688::1736869689::1::::<><>:: -texture_04.png::CompressedTexture2D::705419063103924200::1736869688::1736869689::1::::<><>:: -texture_05.png::CompressedTexture2D::305786682205419453::1736869688::1736869689::1::::<><>:: -texture_06.png::CompressedTexture2D::7876514693098428664::1736869688::1736869689::1::::<><>:: -texture_07.png::CompressedTexture2D::5611489189511299230::1736869688::1736869689::1::::<><>:: -texture_08.png::CompressedTexture2D::6443450056591050810::1736869688::1736869689::1::::<><>:: -texture_09.png::CompressedTexture2D::8595944843117064655::1736869688::1736869689::1::::<><>:: -texture_10.png::CompressedTexture2D::7821201077408947508::1736869688::1736869689::1::::<><>:: -texture_11.png::CompressedTexture2D::1430367131781657164::1736869688::1736869689::1::::<><>:: -texture_12.png::CompressedTexture2D::7360614402890992885::1736869688::1736869689::1::::<><>:: -texture_13.png::CompressedTexture2D::7369035209002593630::1736869688::1736869689::1::::<><>:: -::res://addons/kenney_prototype_textures/light/::1736869689 -texture_01.png::CompressedTexture2D::7862618860966628850::1736869688::1736869689::1::::<><>:: -texture_02.png::CompressedTexture2D::3452553886857033907::1736869688::1736869689::1::::<><>:: -texture_03.png::CompressedTexture2D::4199276934284515983::1736869688::1736869689::1::::<><>:: -texture_04.png::CompressedTexture2D::2942993304927740418::1736869688::1736869689::1::::<><>:: -texture_05.png::CompressedTexture2D::6124607509632685472::1736869688::1736869689::1::::<><>:: -texture_06.png::CompressedTexture2D::1911568459262664059::1736869688::1736869689::1::::<><>:: -texture_07.png::CompressedTexture2D::8622626798144612244::1736869688::1736869689::1::::<><>:: -texture_08.png::CompressedTexture2D::3021798951951848728::1736869688::1736869689::1::::<><>:: -texture_09.png::CompressedTexture2D::8444566319518166270::1736869688::1736869689::1::::<><>:: -texture_10.png::CompressedTexture2D::675458333716866969::1736869688::1736869689::1::::<><>:: -texture_11.png::CompressedTexture2D::5523655257548494756::1736869688::1736869689::1::::<><>:: -texture_12.png::CompressedTexture2D::4857807675388186950::1736869688::1736869689::1::::<><>:: -texture_13.png::CompressedTexture2D::3273862421406529395::1736869688::1736869689::1::::<><>:: -::res://addons/kenney_prototype_textures/orange/::1737029977 -texture_01.png::CompressedTexture2D::8850892896430748122::1736869688::1737029439::1::::<><>:: -texture_02.png::CompressedTexture2D::2672000434421504928::1736869688::1737029939::1::::<><>:: -texture_03.png::CompressedTexture2D::1361783228247061649::1736869688::1736869689::1::::<><>:: -texture_04.png::CompressedTexture2D::1558588222599350847::1736869688::1736869689::1::::<><>:: -texture_05.png::CompressedTexture2D::7880821390891723738::1736869688::1736869689::1::::<><>:: -texture_06.png::CompressedTexture2D::7018380499964468401::1736869688::1736869689::1::::<><>:: -texture_07.png::CompressedTexture2D::6248945065740741411::1736869688::1736869689::1::::<><>:: -texture_08.png::CompressedTexture2D::3954449787186606783::1736869688::1736869689::1::::<><>:: -texture_09.png::CompressedTexture2D::6921285454149224906::1736869688::1737029977::1::::<><>:: -texture_10.png::CompressedTexture2D::379379000582102797::1736869688::1737029975::1::::<><>:: -texture_11.png::CompressedTexture2D::4367015284030897067::1736869688::1736869689::1::::<><>:: -texture_12.png::CompressedTexture2D::1534751701521898135::1736869688::1736869689::1::::<><>:: -texture_13.png::CompressedTexture2D::9011328998200671174::1736869688::1737029973::1::::<><>:: -::res://addons/kenney_prototype_textures/purple/::1736869689 -texture_01.png::CompressedTexture2D::7805623915026090141::1736869688::1736869689::1::::<><>:: -texture_02.png::CompressedTexture2D::8833013530932454676::1736869688::1736869689::1::::<><>:: -texture_03.png::CompressedTexture2D::1142264075268473671::1736869688::1736869689::1::::<><>:: -texture_04.png::CompressedTexture2D::6954617688936199902::1736869688::1736869689::1::::<><>:: -texture_05.png::CompressedTexture2D::8981351822393609896::1736869688::1736869689::1::::<><>:: -texture_06.png::CompressedTexture2D::6445691090060456570::1736869688::1736869689::1::::<><>:: -texture_07.png::CompressedTexture2D::3322378310072755368::1736869688::1736869689::1::::<><>:: -texture_08.png::CompressedTexture2D::3138713553971704626::1736869688::1736869689::1::::<><>:: -texture_09.png::CompressedTexture2D::8311663988417496651::1736869689::1736869689::1::::<><>:: -texture_10.png::CompressedTexture2D::1907232424808447802::1736869689::1736869689::1::::<><>:: -texture_11.png::CompressedTexture2D::277422384403551588::1736869689::1736869689::1::::<><>:: -texture_12.png::CompressedTexture2D::2135924986290984413::1736869689::1736869689::1::::<><>:: -texture_13.png::CompressedTexture2D::2502120491612661883::1736869689::1736869689::1::::<><>:: -::res://addons/kenney_prototype_textures/red/::1736869689 -texture_01.png::CompressedTexture2D::8659956684227579772::1736869689::1736869689::1::::<><>:: -texture_02.png::CompressedTexture2D::5789995300380875368::1736869689::1736869689::1::::<><>:: -texture_03.png::CompressedTexture2D::4952222541510049297::1736869689::1736869689::1::::<><>:: -texture_04.png::CompressedTexture2D::874893283185479439::1736869689::1736869689::1::::<><>:: -texture_05.png::CompressedTexture2D::4396290600234928335::1736869689::1736869689::1::::<><>:: -texture_06.png::CompressedTexture2D::5974277055110559038::1736869689::1736869689::1::::<><>:: -texture_07.png::CompressedTexture2D::5476557456313661038::1736869689::1736869689::1::::<><>:: -texture_08.png::CompressedTexture2D::8196374735315928810::1736869689::1736869689::1::::<><>:: -texture_09.png::CompressedTexture2D::4754284010640071075::1736869689::1736869689::1::::<><>:: -texture_10.png::CompressedTexture2D::2971695225111600166::1736869689::1736869689::1::::<><>:: -texture_11.png::CompressedTexture2D::8096073329999689269::1736869689::1736869689::1::::<><>:: -texture_12.png::CompressedTexture2D::4073907045700868469::1736869689::1736869689::1::::<><>:: -texture_13.png::CompressedTexture2D::3957247833334422199::1736869689::1736869689::1::::<><>:: +::res://addons/kenney_prototype_textures/dark/::1737038454 +texture_01.png::CompressedTexture2D::8014208326336467885::1737037176::1737038454::1::::<><>:: +texture_02.png::CompressedTexture2D::2432288388540315486::1737037176::1737038454::1::::<><>:: +texture_03.png::CompressedTexture2D::718984629790284706::1737037176::1737038454::1::::<><>:: +texture_04.png::CompressedTexture2D::341418743939086096::1737037176::1737038454::1::::<><>:: +texture_05.png::CompressedTexture2D::7351723646777413688::1737037176::1737038454::1::::<><>:: +texture_06.png::CompressedTexture2D::8615009470155375539::1737037176::1737038454::1::::<><>:: +texture_07.png::CompressedTexture2D::2874041732111591054::1737037176::1737038454::1::::<><>:: +texture_08.png::CompressedTexture2D::1035326817980762041::1737037176::1737038454::1::::<><>:: +texture_09.png::CompressedTexture2D::6407493781882021197::1737037176::1737038454::1::::<><>:: +texture_10.png::CompressedTexture2D::970016071898969561::1737037176::1737038454::1::::<><>:: +texture_11.png::CompressedTexture2D::5381106305644616509::1737037176::1737038454::1::::<><>:: +texture_12.png::CompressedTexture2D::8434509427464472327::1737037176::1737038454::1::::<><>:: +texture_13.png::CompressedTexture2D::7788556782362452097::1737037176::1737038454::1::::<><>:: +::res://addons/kenney_prototype_textures/green/::1737038454 +texture_01.png::CompressedTexture2D::3591690079457645626::1737037176::1737038454::1::::<><>:: +texture_02.png::CompressedTexture2D::1698616428607644272::1737037176::1737038454::1::::<><>:: +texture_03.png::CompressedTexture2D::265155403077655284::1737037176::1737038454::1::::<><>:: +texture_04.png::CompressedTexture2D::705419063103924200::1737037176::1737038454::1::::<><>:: +texture_05.png::CompressedTexture2D::305786682205419453::1737037176::1737038454::1::::<><>:: +texture_06.png::CompressedTexture2D::7876514693098428664::1737037176::1737038454::1::::<><>:: +texture_07.png::CompressedTexture2D::5611489189511299230::1737037176::1737038454::1::::<><>:: +texture_08.png::CompressedTexture2D::6443450056591050810::1737037176::1737038454::1::::<><>:: +texture_09.png::CompressedTexture2D::8595944843117064655::1737037176::1737038454::1::::<><>:: +texture_10.png::CompressedTexture2D::7821201077408947508::1737037176::1737038454::1::::<><>:: +texture_11.png::CompressedTexture2D::1430367131781657164::1737037176::1737038454::1::::<><>:: +texture_12.png::CompressedTexture2D::7360614402890992885::1737037176::1737038454::1::::<><>:: +texture_13.png::CompressedTexture2D::7369035209002593630::1737037176::1737038454::1::::<><>:: +::res://addons/kenney_prototype_textures/light/::1737038454 +texture_01.png::CompressedTexture2D::7862618860966628850::1737037176::1737038454::1::::<><>:: +texture_02.png::CompressedTexture2D::3452553886857033907::1737037176::1737038454::1::::<><>:: +texture_03.png::CompressedTexture2D::4199276934284515983::1737037176::1737038454::1::::<><>:: +texture_04.png::CompressedTexture2D::2942993304927740418::1737037176::1737038454::1::::<><>:: +texture_05.png::CompressedTexture2D::6124607509632685472::1737037176::1737038454::1::::<><>:: +texture_06.png::CompressedTexture2D::1911568459262664059::1737037176::1737038454::1::::<><>:: +texture_07.png::CompressedTexture2D::8622626798144612244::1737037176::1737038454::1::::<><>:: +texture_08.png::CompressedTexture2D::3021798951951848728::1737037176::1737038454::1::::<><>:: +texture_09.png::CompressedTexture2D::8444566319518166270::1737037176::1737038454::1::::<><>:: +texture_10.png::CompressedTexture2D::675458333716866969::1737037176::1737038454::1::::<><>:: +texture_11.png::CompressedTexture2D::5523655257548494756::1737037176::1737038454::1::::<><>:: +texture_12.png::CompressedTexture2D::4857807675388186950::1737037176::1737038454::1::::<><>:: +texture_13.png::CompressedTexture2D::3273862421406529395::1737037176::1737038454::1::::<><>:: +::res://addons/kenney_prototype_textures/orange/::1737038454 +texture_01.png::CompressedTexture2D::8850892896430748122::1737037176::1737038454::1::::<><>:: +texture_02.png::CompressedTexture2D::2672000434421504928::1737037176::1737038454::1::::<><>:: +texture_03.png::CompressedTexture2D::1361783228247061649::1737037176::1737038454::1::::<><>:: +texture_04.png::CompressedTexture2D::1558588222599350847::1737037176::1737038454::1::::<><>:: +texture_05.png::CompressedTexture2D::7880821390891723738::1737037176::1737038454::1::::<><>:: +texture_06.png::CompressedTexture2D::7018380499964468401::1737037176::1737038454::1::::<><>:: +texture_07.png::CompressedTexture2D::6248945065740741411::1737037176::1737038454::1::::<><>:: +texture_08.png::CompressedTexture2D::3954449787186606783::1737037176::1737038454::1::::<><>:: +texture_09.png::CompressedTexture2D::6921285454149224906::1737037176::1737038454::1::::<><>:: +texture_10.png::CompressedTexture2D::379379000582102797::1737037176::1737038454::1::::<><>:: +texture_11.png::CompressedTexture2D::4367015284030897067::1737037176::1737038454::1::::<><>:: +texture_12.png::CompressedTexture2D::1534751701521898135::1737037176::1737038454::1::::<><>:: +texture_13.png::CompressedTexture2D::9011328998200671174::1737037176::1737038454::1::::<><>:: +::res://addons/kenney_prototype_textures/purple/::1737038454 +texture_01.png::CompressedTexture2D::7805623915026090141::1737037176::1737038454::1::::<><>:: +texture_02.png::CompressedTexture2D::8833013530932454676::1737037176::1737038454::1::::<><>:: +texture_03.png::CompressedTexture2D::1142264075268473671::1737037176::1737038454::1::::<><>:: +texture_04.png::CompressedTexture2D::6954617688936199902::1737037176::1737038454::1::::<><>:: +texture_05.png::CompressedTexture2D::8981351822393609896::1737037176::1737038454::1::::<><>:: +texture_06.png::CompressedTexture2D::6445691090060456570::1737037176::1737038454::1::::<><>:: +texture_07.png::CompressedTexture2D::3322378310072755368::1737037176::1737038454::1::::<><>:: +texture_08.png::CompressedTexture2D::3138713553971704626::1737037176::1737038454::1::::<><>:: +texture_09.png::CompressedTexture2D::8311663988417496651::1737037176::1737038454::1::::<><>:: +texture_10.png::CompressedTexture2D::1907232424808447802::1737037176::1737038454::1::::<><>:: +texture_11.png::CompressedTexture2D::277422384403551588::1737037176::1737038454::1::::<><>:: +texture_12.png::CompressedTexture2D::2135924986290984413::1737037176::1737038454::1::::<><>:: +texture_13.png::CompressedTexture2D::2502120491612661883::1737037176::1737038454::1::::<><>:: +::res://addons/kenney_prototype_textures/red/::1737038454 +texture_01.png::CompressedTexture2D::8659956684227579772::1737037176::1737038454::1::::<><>:: +texture_02.png::CompressedTexture2D::5789995300380875368::1737037176::1737038454::1::::<><>:: +texture_03.png::CompressedTexture2D::4952222541510049297::1737037176::1737038454::1::::<><>:: +texture_04.png::CompressedTexture2D::874893283185479439::1737037176::1737038454::1::::<><>:: +texture_05.png::CompressedTexture2D::4396290600234928335::1737037176::1737038454::1::::<><>:: +texture_06.png::CompressedTexture2D::5974277055110559038::1737037176::1737038454::1::::<><>:: +texture_07.png::CompressedTexture2D::5476557456313661038::1737037176::1737038454::1::::<><>:: +texture_08.png::CompressedTexture2D::8196374735315928810::1737037176::1737038454::1::::<><>:: +texture_09.png::CompressedTexture2D::4754284010640071075::1737037176::1737038454::1::::<><>:: +texture_10.png::CompressedTexture2D::2971695225111600166::1737037176::1737038454::1::::<><>:: +texture_11.png::CompressedTexture2D::8096073329999689269::1737037176::1737038454::1::::<><>:: +texture_12.png::CompressedTexture2D::4073907045700868469::1737037176::1737038454::1::::<><>:: +texture_13.png::CompressedTexture2D::3957247833334422199::1737037176::1737038454::1::::<><>:: ::res://scenes/::1736869534 ::res://scenes/maps/::1737031584 test_map.tscn::PackedScene::509131424662177622::1737031584::0::1::::<><>::uid://c5uytbu1wc1bq::::res://addons/kenney_prototype_textures/orange/texture_09.png<>uid://e4nd8b6f0tw7::::res://addons/kenney_prototype_textures/dark/texture_04.png<>uid://ccm77j5rkh21w::::res://scenes/utils/character.tscn -::res://scenes/utils/::1737036964 -character.tscn::PackedScene::4939992196724824302::1737036964::0::1::::<><>::res://scenes/utils/character_body_3d.gd -character_body_3d.gd::GDScript::-1::1737036962::0::1::::<>CharacterBody3D<>:: +::res://scenes/utils/::1737038823 +character.tscn::PackedScene::4939992196724824302::1737038823::0::1::::<><>::res://scripts/character_controller.gd<>uid://d1nfjip21kjpu::::res://addons/kenney_prototype_textures/orange/texture_13.png ::res://scenes/weapon/::1736869509 -::res://scripts/::1737033404 +::res://scripts/::1737038776 +character_controller.gd::GDScript::-1::1737038776::0::1::::Player<>CharacterBody3D<>:: diff --git a/.godot/editor/script_editor_cache.cfg b/.godot/editor/script_editor_cache.cfg index 43a3c30..31cd2d0 100644 --- a/.godot/editor/script_editor_cache.cfg +++ b/.godot/editor/script_editor_cache.cfg @@ -1,13 +1,13 @@ -[res://scenes/utils/character_body_3d.gd] +[res://scripts/character_controller.gd] state={ "bookmarks": PackedInt32Array(), "breakpoints": PackedInt32Array(), "column": 0, -"folded_lines": Array[int]([]), +"folded_lines": Array[int]([0]), "h_scroll_position": 0, -"row": 9, -"scroll_position": 0.0, +"row": 59, +"scroll_position": 22.0, "selection": false, "syntax_highlighter": "GDScript" } diff --git a/.godot/global_script_class_cache.cfg b/.godot/global_script_class_cache.cfg index 1775a2f..99326da 100644 --- a/.godot/global_script_class_cache.cfg +++ b/.godot/global_script_class_cache.cfg @@ -1 +1,7 @@ -list=Array[Dictionary]([]) +list=Array[Dictionary]([{ +"base": &"CharacterBody3D", +"class": &"Player", +"icon": "", +"language": &"GDScript", +"path": "res://scripts/character_controller.gd" +}]) diff --git a/project.godot b/project.godot index 95c4926..7ad307c 100644 --- a/project.godot +++ b/project.godot @@ -18,3 +18,36 @@ config/icon="res://icon.svg" [display] window/size/mode=3 + +[input] + +move_left={ +"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":65,"key_label":0,"unicode":97,"location":0,"echo":false,"script":null) +] +} +move_right={ +"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":68,"key_label":0,"unicode":100,"location":0,"echo":false,"script":null) +] +} +move_forward={ +"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":87,"key_label":0,"unicode":119,"location":0,"echo":false,"script":null) +] +} +move_backwards={ +"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":83,"key_label":0,"unicode":115,"location":0,"echo":false,"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,"location":0,"echo":false,"script":null) +] +} +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,"location":0,"echo":false,"script":null) +] +} diff --git a/scenes/utils/character.tscn b/scenes/utils/character.tscn index 02da219..50b2978 100644 --- a/scenes/utils/character.tscn +++ b/scenes/utils/character.tscn @@ -1,21 +1,27 @@ -[gd_scene load_steps=3 format=3 uid="uid://ccm77j5rkh21w"] +[gd_scene load_steps=5 format=3 uid="uid://ccm77j5rkh21w"] -[ext_resource type="Script" path="res://scenes/utils/character_body_3d.gd" id="1_0ojbt"] +[ext_resource type="Script" path="res://scripts/character_controller.gd" id="1_sue4n"] +[ext_resource type="Texture2D" uid="uid://d1nfjip21kjpu" path="res://addons/kenney_prototype_textures/orange/texture_13.png" id="2_i60ip"] + +[sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m6bjf"] +albedo_texture = ExtResource("2_i60ip") [sub_resource type="CylinderShape3D" id="CylinderShape3D_1sre5"] [node name="Character" type="Node3D"] [node name="CharacterBody3D" type="CharacterBody3D" parent="."] -script = ExtResource("1_0ojbt") +script = ExtResource("1_sue4n") [node name="Body" type="CSGCylinder3D" parent="CharacterBody3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.975222, 0) +material_override = SubResource("StandardMaterial3D_m6bjf") [node name="CameraMount" type="Node3D" parent="CharacterBody3D/Body"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1.02478, 0) +transform = Transform3D(1, 0, 0, 0, 0.999971, 0.00759248, 0, -0.00759248, 0.999971, 0, 0.951, 0) [node name="Camera" type="Camera3D" parent="CharacterBody3D/Body/CameraMount"] +transform = Transform3D(1, 0, 0, 0, 1, -4.65661e-10, 0, 0, 1, 0, 0.0051769, -0.68182) [node name="CollisionShape3D" type="CollisionShape3D" parent="CharacterBody3D"] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.981342, 0) diff --git a/scenes/utils/character_body_3d.gd b/scenes/utils/character_body_3d.gd deleted file mode 100644 index c85345d..0000000 --- a/scenes/utils/character_body_3d.gd +++ /dev/null @@ -1,41 +0,0 @@ -extends CharacterBody3D - - -const SPEED = 5.0 -const JUMP_VELOCITY = 4.5 - -var mouse_sens = 0.3 -var camera_anglev=0 - - -func _input(event): - if event is InputEventMouseMotion: - $Body.rotate_y(deg_to_rad(-event.relative.x*mouse_sens)) - var changev=-event.relative.y*mouse_sens - $Body/CameraMount.rotate_x(deg_to_rad(-event.relative.y*mouse_sens)) - #var changev=-event.relative.x*mouse_sens - #if camera_anglev+changev>-50 and camera_anglev+changev<50: - #camera_anglev+=changev - #$CameraMount.rotate_x(deg_to_rad(changev)) - -func _physics_process(delta: float) -> void: - # Add the gravity. - if not is_on_floor(): - velocity += get_gravity() * delta - - # Handle jump. - if Input.is_action_just_pressed("ui_accept") and is_on_floor(): - velocity.y = JUMP_VELOCITY - - # Get the input direction and handle the movement/deceleration. - # As good practice, you should replace UI actions with custom gameplay actions. - var input_dir := Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down") - var direction := (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() - if direction: - velocity.x = direction.x * SPEED - velocity.z = direction.z * SPEED - else: - velocity.x = move_toward(velocity.x, 0, SPEED) - velocity.z = move_toward(velocity.z, 0, SPEED) - - move_and_slide() diff --git a/scripts/character_controller.gd b/scripts/character_controller.gd new file mode 100644 index 0000000..c8d799a --- /dev/null +++ b/scripts/character_controller.gd @@ -0,0 +1,78 @@ +# --------------------------------------------------------------------- +# This script is supposed to handle character movement logic +# --------------------------------------------------------------------- +class_name Player extends CharacterBody3D + +@export_category("Player") +@export_range(1, 35, 1) var speed: float = 10 # m/s +@export_range(10, 400, 1) var acceleration: float = 100 # m/s^2 + +@export_range(0.1, 3.0, 0.1) var jump_height: float = 1 # m +@export_range(0.1, 3.0, 0.1, "or_greater") var camera_sens: float = 1 + +var jumping: bool = false +var mouse_captured: bool = false + +var gravity: float = ProjectSettings.get_setting("physics/3d/default_gravity") + +var move_dir: Vector2 # Input direction for movement +var look_dir: Vector2 # Input direction for look/aim + +var walk_vel: Vector3 # Walking velocity +var grav_vel: Vector3 # Gravity velocity +var jump_vel: Vector3 # Jumping velocity + +@onready var camera: Node3D = $Body/CameraMount + +func _ready() -> void: + capture_mouse() + +func _unhandled_input(event: InputEvent) -> void: + if event is InputEventMouseMotion: + look_dir = event.relative * 0.001 + if mouse_captured: _rotate_camera() + if Input.is_action_just_pressed("jump"): jumping = true + if Input.is_action_just_pressed("exit"): get_tree().quit() + +func _physics_process(delta: float) -> void: + if mouse_captured: _handle_joypad_camera_rotation(delta) + velocity = _walk(delta) + _gravity(delta) + _jump(delta) + move_and_slide() + +func capture_mouse() -> void: + Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED) + mouse_captured = true + +func release_mouse() -> void: + Input.set_mouse_mode(Input.MOUSE_MODE_VISIBLE) + mouse_captured = false + +func _rotate_camera(sens_mod: float = 1.0) -> void: + camera.rotation.y -= look_dir.x * camera_sens * sens_mod + camera.rotation.x = clamp(camera.rotation.x - look_dir.y * camera_sens * sens_mod, -1.5, 1.5) + +func _handle_joypad_camera_rotation(delta: float, sens_mod: float = 1.0) -> void: + var joypad_dir: Vector2 = Input.get_vector("look_left","look_right","look_up","look_down") + if joypad_dir.length() > 0: + look_dir += joypad_dir * delta + _rotate_camera(sens_mod) + look_dir = Vector2.ZERO + +func _walk(delta: float) -> Vector3: + move_dir = Input.get_vector("move_left", "move_right", "move_forward", "move_backwards") + var _forward: Vector3 = camera.global_transform.basis * Vector3(move_dir.x, 0, move_dir.y) + var walk_dir: Vector3 = Vector3(_forward.x, 0, _forward.z).normalized() + walk_vel = walk_vel.move_toward(walk_dir * speed * move_dir.length(), acceleration * delta) + return walk_vel + +func _gravity(delta: float) -> Vector3: + grav_vel = Vector3.ZERO if is_on_floor() else grav_vel.move_toward(Vector3(0, velocity.y - gravity, 0), gravity * delta) + return grav_vel + +func _jump(delta: float) -> Vector3: + if jumping: + if is_on_floor(): jump_vel = Vector3(0, sqrt(4 * jump_height * gravity), 0) + jumping = false + return jump_vel + jump_vel = Vector3.ZERO if is_on_floor() else jump_vel.move_toward(Vector3.ZERO, gravity * delta) + return jump_vel