Add basic movement

This commit is contained in:
Nikolai Rodionov 2025-01-16 15:53:27 +01:00
parent 4b1867590a
commit 7a9f7cc88d
Signed by: allanger
GPG Key ID: 09F8B434D0FDD99B
12 changed files with 236 additions and 165 deletions

18
.gitignore vendored
View File

@ -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/

View File

@ -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")])

View File

@ -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=[]

View File

@ -0,0 +1,3 @@
[folding]
sections_unfolded=PackedStringArray()

View File

@ -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

View File

@ -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<>::

View File

@ -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"
}

View File

@ -1 +1,7 @@
list=Array[Dictionary]([])
list=Array[Dictionary]([{
"base": &"CharacterBody3D",
"class": &"Player",
"icon": "",
"language": &"GDScript",
"path": "res://scripts/character_controller.gd"
}])

View File

@ -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)
]
}

View File

@ -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)

View File

@ -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()

View File

@ -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