game: add godot project
This commit is contained in:
63
scenes/player.gd
Normal file
63
scenes/player.gd
Normal file
@@ -0,0 +1,63 @@
|
||||
extends CharacterBody2D
|
||||
|
||||
@export var camera: Camera2D
|
||||
@export var main_ui: MainUI
|
||||
@export var default_movement_speed: float = 200.0
|
||||
@export var default_max_health: float = 50.0
|
||||
|
||||
@onready var sprite_2d: Sprite2D = $Sprite2D
|
||||
|
||||
var movement_speed: float
|
||||
var max_health: float
|
||||
var health: float
|
||||
var dead: bool = false
|
||||
var death_anim_done: bool = false
|
||||
var god_mode: bool = false
|
||||
|
||||
func _ready() -> void:
|
||||
camera.position = global_position
|
||||
movement_speed = default_movement_speed
|
||||
max_health = default_max_health
|
||||
health = max_health
|
||||
main_ui.player_ui.set_hp(100)
|
||||
GlobalConst.sig_debug_god_mode.connect(toggle_god_mode)
|
||||
|
||||
func _physics_process(delta: float) -> void:
|
||||
if dead:
|
||||
return
|
||||
var input_direction = Input.get_vector("left", "right", "up", "down")
|
||||
velocity = input_direction * movement_speed
|
||||
move_and_slide()
|
||||
|
||||
func _process(delta: float) -> void:
|
||||
camera.position_smoothing_enabled = true
|
||||
camera.position = global_position
|
||||
if dead and !death_anim_done:
|
||||
death_animation(delta)
|
||||
|
||||
func take_damage(value: float) -> void:
|
||||
if dead or god_mode:
|
||||
return
|
||||
health -= value
|
||||
print_debug("player took damage. now has %s hp" % health)
|
||||
main_ui.player_ui.set_hp(health / max_health * 100)
|
||||
if health <= 0:
|
||||
die()
|
||||
|
||||
func die():
|
||||
dead = true
|
||||
remove_from_group("damagable")
|
||||
get_tree().call_group("enemy", "cheer_anim")
|
||||
sprite_2d.z_index += 10
|
||||
|
||||
func death_animation(delta: float):
|
||||
# Engine.time_scale = clampf(lerpf(Engine.time_scale, 0.25, 0.5), 0.25, 0.9*delta)
|
||||
camera.zoom = lerp(camera.zoom, Vector2(8,8), 0.99*delta)
|
||||
rotation_degrees = lerpf(rotation_degrees, 90, 0.99*delta)
|
||||
if rotation_degrees > 88:
|
||||
main_ui.pause_ui.toggle_pause_ui()
|
||||
death_anim_done = true
|
||||
|
||||
func toggle_god_mode(value: bool):
|
||||
god_mode = value
|
||||
|
Reference in New Issue
Block a user