mirror of
https://github.com/godotengine/godot-demo-projects.git
synced 2026-01-04 06:09:46 +03:00
This leads to code that is easier to understand and runs faster thanks to GDScript's typed instructions. The untyped declaration warning is now enabled on all projects where type hints were added. All projects currently run without any untyped declration warnings. Dodge the Creeps and Squash the Creeps demos intentionally don't use type hints to match the documentation, where type hints haven't been adopted yet (given its beginner focus).
33 lines
1.2 KiB
GDScript
33 lines
1.2 KiB
GDScript
extends CharacterBody2D
|
|
|
|
const WALK_FORCE = 600
|
|
const WALK_MAX_SPEED = 200
|
|
const STOP_FORCE = 1300
|
|
const JUMP_SPEED = 200
|
|
|
|
@onready var gravity: float = ProjectSettings.get_setting("physics/2d/default_gravity")
|
|
|
|
func _physics_process(delta: float) -> void:
|
|
# Horizontal movement code. First, get the player's input.
|
|
var walk := WALK_FORCE * (Input.get_axis(&"move_left", &"move_right"))
|
|
# Slow down the player if they're not trying to move.
|
|
if abs(walk) < WALK_FORCE * 0.2:
|
|
# The velocity, slowed down a bit, and then reassigned.
|
|
velocity.x = move_toward(velocity.x, 0, STOP_FORCE * delta)
|
|
else:
|
|
velocity.x += walk * delta
|
|
# Clamp to the maximum horizontal movement speed.
|
|
velocity.x = clamp(velocity.x, -WALK_MAX_SPEED, WALK_MAX_SPEED)
|
|
|
|
# Vertical movement code. Apply gravity.
|
|
velocity.y += gravity * delta
|
|
|
|
# Move based on the velocity and snap to the ground.
|
|
# TODO: This information should be set to the CharacterBody properties instead of arguments: snap, Vector2.DOWN, Vector2.UP
|
|
# TODO: Rename velocity to linear_velocity in the rest of the script.
|
|
move_and_slide()
|
|
|
|
# Check for jumping. is_on_floor() must be called after movement code.
|
|
if is_on_floor() and Input.is_action_just_pressed(&"jump"):
|
|
velocity.y = -JUMP_SPEED
|