extends KinematicBody signal player_damaged signal player_died # export (PackedScene) var PlayerBullet var PlayerBullet = preload("res://assets/PlayerBullet.tscn") const SPEED = 32 var velocity = Vector3() var bullets var hp = 50 var damage = 0 var damaging = false func _ready(): hp = 50 damage = 0 damaging = false # bullets = get_tree().root.get_node("Main/PlayerBullets") bullets = $"/root/Main/PlayerBullets" #func _process(delta): # pass func _physics_process(delta): # move velocity = Vector3() if Input.is_action_pressed("ui_right"): velocity.x = 1 elif Input.is_action_pressed("ui_left"): velocity.x = -1 if Input.is_action_pressed("ui_down"): velocity.z = 1 elif Input.is_action_pressed("ui_up"): velocity.z = -1 # Do not multiply by delta when using move_and_slide() velocity = velocity.normalized() * SPEED move_and_slide(velocity) if not damaging: if damage > 0: hp -= damage damage = 0 if hp <= 0: hp = 0 emit_signal("player_damaged") damaging = true $DamageTimer.start() $BlinkTimer.start() func _on_ShotTimer_timeout(): var bullet = PlayerBullet.instance() var pos = Vector3(translation.x, translation.y, translation.z - 1.5) bullet.translation = pos bullets.add_child(bullet) func _on_DamageTimer_timeout(): $BlinkTimer.stop() damage = 0 damaging = false visible = true if hp <= 0: hp = 0 emit_signal("player_died") func _on_BlinkTimer_timeout(): visible = not visible