summaryrefslogtreecommitdiff
path: root/Player.gd
diff options
context:
space:
mode:
authorDaniel Weipert <git@mail.dweipert.de>2024-05-23 23:45:28 +0200
committerDaniel Weipert <git@mail.dweipert.de>2024-05-23 23:45:52 +0200
commit7b11b1c2d8552b99f3e615a79621a2db769d9f5d (patch)
tree2a885d0835352ba961508921ffc872dcd46e905d /Player.gd
initial commit
Diffstat (limited to 'Player.gd')
-rw-r--r--Player.gd36
1 files changed, 36 insertions, 0 deletions
diff --git a/Player.gd b/Player.gd
new file mode 100644
index 0000000..9528586
--- /dev/null
+++ b/Player.gd
@@ -0,0 +1,36 @@
+extends CharacterBody2D
+
+
+const SPEED = 300.0
+
+const JUMP_VELOCITY = -400.0
+
+# Get the gravity from the project settings to be synced with RigidBody nodes.
+var gravity = ProjectSettings.get_setting("physics/2d/default_gravity")
+
+
+func _physics_process(delta):
+ # Get the input direction and handle the movement/deceleration.
+ # As good practice, you should replace UI actions with custom gameplay actions.
+ var direction = Input.get_axis("ui_left", "ui_right")
+ if direction:
+ velocity.x = direction * SPEED
+ else:
+ velocity.x = move_toward(velocity.x, 0, SPEED)
+
+ # Add the gravity.
+ if not is_on_floor():
+ velocity.y += gravity * delta
+
+ # Handle jump.
+ if Input.is_action_just_pressed("jump") and is_on_floor():
+ velocity.y = JUMP_VELOCITY
+ if Input.is_action_just_released("jump"):
+ if velocity.y < 0:
+ velocity.y = 0
+
+ if is_on_wall() and not is_on_floor() and direction and Input.is_action_just_pressed("jump"):
+ velocity.y = JUMP_VELOCITY
+ velocity.x += abs((SPEED*2) / (JUMP_VELOCITY/gravity)) * -direction
+
+ move_and_slide()