player.gd 893 B

123456789101112131415161718192021222324252627
  1. extends Node3D
  2. @onready var sprite: AnimatedSprite3D = $AnimatedSprite3D
  3. @export var move_speed: float = 5.0
  4. var velocity: Vector3 = Vector3.ZERO
  5. func _process(delta: float) -> void:
  6. var input_vector: Vector2 = Vector2.ZERO
  7. input_vector.x = Input.get_action_strength("move_right") - Input.get_action_strength("move_left")
  8. input_vector.y = Input.get_action_strength("move_back") - Input.get_action_strength("move_forward")
  9. if input_vector.length() > 0:
  10. input_vector = input_vector.normalized()
  11. # Update player's position in 3D space.
  12. velocity = Vector3(input_vector.x, 0, input_vector.y) * move_speed
  13. translate(velocity * delta)
  14. # Play corresponding animation.
  15. if abs(input_vector.x) > abs(input_vector.y):
  16. sprite.play("walk_right" if input_vector.x > 0 else "walk_left")
  17. else:
  18. sprite.play("walk_down" if input_vector.y > 0 else "walk_up")
  19. else:
  20. sprite.stop()