48 lines
1.1 KiB
GDScript
48 lines
1.1 KiB
GDScript
#@tool
|
|
#@icon
|
|
#class_name
|
|
extends CharacterBody2D
|
|
## Top-down player controller
|
|
|
|
## Signals
|
|
## Enums
|
|
## Constants
|
|
## @export variables
|
|
@export var walking_speed: int = 100
|
|
@export var running_speed: int = 150
|
|
@export var turning_speed: float = 0.1
|
|
## Regular variables
|
|
var thrust: float = 0.0
|
|
var rudder: float = 0.0
|
|
var yaw: float = 0.0
|
|
var heading: Vector2 = Vector2.UP
|
|
var is_running: bool = false
|
|
## @onready variables
|
|
|
|
## Overridden built-in virtual methods
|
|
#func _init() -> void:
|
|
#func _enter_tree() -> void:
|
|
#func _ready() -> void:
|
|
#func _process(_delta: float) -> void:
|
|
|
|
func _physics_process(_delta: float) -> void:
|
|
thrust = Input.get_axis("backward", "forward")
|
|
rudder = Input.get_axis("turn_left", "turn_right")
|
|
yaw = rudder * turning_speed
|
|
|
|
heading = heading.rotated(yaw)
|
|
rotate(yaw)
|
|
|
|
is_running = Input.is_action_pressed("run") and thrust > 0.0
|
|
if is_running:
|
|
velocity = thrust * heading * running_speed
|
|
else:
|
|
velocity = thrust * heading * walking_speed
|
|
|
|
|
|
move_and_slide()
|
|
## Remaining virtual methods
|
|
## Overridden custom methods
|
|
## Remaining methods
|
|
## Subclasses
|