Files
CatTank/scripts/player.gd

48 lines
1.2 KiB
GDScript

extends CharacterBody2D
@export var max_speed: float = 150.0
@export var acceleration: float = 250.0
@export var deceleration: float = 120.0
@export var rotation_speed: float = 2.5
@export var max_health: float = 100.0
signal health_changed(current, max)
signal died
var current_health: float
func _ready():
add_to_group("player")
current_health = max_health
health_changed.emit(current_health, max_health)
func take_damage(amount: float):
current_health -= amount
health_changed.emit(current_health, max_health)
if current_health <= 0:
die()
func die():
died.emit()
func _physics_process(delta):
#rotate
var turn_input = Input.get_action_strength("kb_d") - Input.get_action_strength("kb_a")
rotation += turn_input * rotation_speed * delta
#move
var move_input = Input.get_action_strength("kb_w") - Input.get_action_strength("kb_s")
#current hull direction
var forward_dir = Vector2.RIGHT.rotated(rotation)
#calc velocity
var forward_speed = velocity.dot(forward_dir)
var target_speed = move_input * max_speed
forward_speed = move_toward(forward_speed, target_speed, (acceleration if move_input != 0 else deceleration) * delta)
velocity = forward_dir * forward_speed
move_and_slide()