Now About Social Code
summaryrefslogtreecommitdiff
path: root/scripts/player.gd
diff options
context:
space:
mode:
authorLucas Fryzek <lucas.fryzek@fryzekconcepts.com>2023-09-17 22:00:55 -0400
committerLucas Fryzek <lucas.fryzek@fryzekconcepts.com>2023-09-17 22:00:55 -0400
commit7bfa7fcf02124a4508dffa9d78e8ef921b86a315 (patch)
treeed800e13df324341d8d1e5cead44f95e69718869 /scripts/player.gd
parentf2b1bba5a9fe2b0bede6792a34965987902c41aa (diff)
Setup basic player controller
Diffstat (limited to 'scripts/player.gd')
-rw-r--r--scripts/player.gd39
1 files changed, 39 insertions, 0 deletions
diff --git a/scripts/player.gd b/scripts/player.gd
new file mode 100644
index 0000000..49bf1b7
--- /dev/null
+++ b/scripts/player.gd
@@ -0,0 +1,39 @@
+extends CharacterBody3D
+
+
+const SPEED = 5.0
+const JUMP_VELOCITY = 4.5
+
+# Get the gravity from the project settings to be synced with RigidBody nodes.
+var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")
+
+func _ready():
+ Input.set_mouse_mode(Input.MOUSE_MODE_CAPTURED)
+ $ThirdPersonCamera.mouse_follow = true
+
+func _physics_process(delta):
+ # Add the gravity.
+ if not is_on_floor():
+ velocity.y -= gravity * delta
+
+ # Handle Jump.
+ if Input.is_action_just_pressed("ui_accept") and is_on_floor():
+ velocity.y = JUMP_VELOCITY
+
+ var fwd = $ThirdPersonCamera.get_front_direction()
+ var right = $ThirdPersonCamera.get_right_direction()
+
+ look_at(position + fwd, Vector3.UP)
+
+ # 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_down", "ui_up")
+ var direction = (input_dir.y * fwd + input_dir.x * right).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()