summaryrefslogtreecommitdiff
path: root/modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd
diff options
context:
space:
mode:
authorfabriceci <fabricecipolla@gmail.com>2021-10-11 11:30:59 +0200
committerjmb462 <jmb462@gmail.com>2022-01-02 21:52:09 +0100
commit9d5b80705912d85c3c7301ac0ea0afbf9372a660 (patch)
treee9528ac06fcfc29bc43846713d1c3ddb94becc22 /modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd
parent28174d531b7128f0281fc2b88da2f4962fd3513e (diff)
Improve editor template workflow
Co-Authored-By: jmb462 <jmb462@gmail.com>
Diffstat (limited to 'modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd')
-rw-r--r--modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd29
1 files changed, 29 insertions, 0 deletions
diff --git a/modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd b/modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd
new file mode 100644
index 0000000000..0824d894c5
--- /dev/null
+++ b/modules/gdscript/editor_templates/CharacterBody2D/basic_movement.gd
@@ -0,0 +1,29 @@
+# meta-description: Classic movement for gravity games (platformer, ...)
+
+extends _BASE_
+
+const SPEED: float = 300.0
+const JUMP_FORCE: float = -400.0
+
+# Get the gravity from the project settings to be synced with RigidDynamicBody nodes.
+var gravity: int = ProjectSettings.get_setting("physics/2d/default_gravity")
+
+
+func _physics_process(delta: float) -> void:
+ # Add the gravity.
+ if not is_on_floor():
+ motion_velocity.y += gravity * delta
+
+ # Handle Jump.
+ if Input.is_action_just_pressed("ui_accept") and is_on_floor():
+ motion_velocity.y = JUMP_FORCE
+
+ # 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:
+ motion_velocity.x = direction * SPEED
+ else:
+ motion_velocity.x = move_toward(motion_velocity.x, 0, SPEED)
+
+ move_and_slide()