42 lines
985 B
GDScript
42 lines
985 B
GDScript
extends CharacterBody3D
|
|
class_name EnemyCharacter
|
|
|
|
@export var start_health : int = 10
|
|
@export var loot_dropped : int = 3
|
|
|
|
const GOLDCOIN = preload("res://Prefabs/goldcoin.tscn")
|
|
const MAX_AV = 15
|
|
const MAX_LV = 2
|
|
|
|
|
|
var health
|
|
|
|
func _ready() -> void:
|
|
health = start_health
|
|
|
|
func hit(damage):
|
|
health -= damage
|
|
print("HEALTH : ",health)
|
|
print("HIT")
|
|
if health <= 0:
|
|
die()
|
|
|
|
func die():
|
|
drop_loot()
|
|
queue_free()
|
|
|
|
func drop_loot():
|
|
while loot_dropped > 0:
|
|
var instance_coin = GOLDCOIN.instantiate()
|
|
var av_x = randf_range(-MAX_AV,MAX_AV)
|
|
var av_y = randf_range(-MAX_AV,MAX_AV)
|
|
var av_z = randf_range(-MAX_AV,MAX_AV)
|
|
var lv_x = randf_range(-MAX_LV,MAX_LV)
|
|
var lv_y = randf_range(0,MAX_LV)
|
|
var lv_z = randf_range(-MAX_LV,MAX_LV)
|
|
get_tree().current_scene.add_child(instance_coin)
|
|
instance_coin.global_position = global_position
|
|
instance_coin.angular_velocity = Vector3(av_x,av_y,av_z)
|
|
instance_coin.linear_velocity = Vector3(lv_x,lv_y,lv_z)
|
|
loot_dropped -= 1
|