1234567891011121314151617181920212223242526272829303132 |
- class_name Walker
- extends CharacterBody3D
- # How fast the player moves in meters per second.
- @export var speed = 14
- # The downward acceleration when in the air, in meters per second squared.
- @export var fall_acceleration = 75
- # Vertical impulse applied to the character upon jumping in meters per second.
- @export var jump_impulse = 20
- var target_velocity = Vector3.ZERO
- func _physics_process(delta: float) -> void:
- var direction = Vector3.ZERO
- var ground_velocity: Vector2 = Input.get_vector("move_left", "move_right", "move_forward", "move_back")
- # Ground Velocity
- target_velocity.x = ground_velocity.x * speed
- target_velocity.z = ground_velocity.y * speed
- # Vertical Velocity
- if is_on_floor():
- if Input.is_action_just_pressed("jump"):
- target_velocity.y = jump_impulse
- else:
- target_velocity.y = target_velocity.y - (fall_acceleration * delta)
- # Moving the Character
- velocity = target_velocity
- move_and_slide()
|