changes + enemy particles

This commit is contained in:
Michael Campbell 2026-04-30 04:42:00 -04:00
parent 457de8dcaa
commit 0f8f737bc0
12 changed files with 2949 additions and 24 deletions

View file

@ -9,6 +9,9 @@ const FRAME_IDXS := 10
@export var knockback_mul := 1.
@export var invulnerable := false
@export var shatter_scene: PackedScene
@export var mesh: Node3D
var frame_idx := 0
var frame_count := 0
@ -56,7 +59,7 @@ func _process(delta: float) -> void:
move_and_slide()
func kill() -> void:
func kill(damager_pos = Vector3.ZERO) -> void:
queue_free()
var siren: AudioStreamPlayer3D = %Siren
@ -72,6 +75,33 @@ func kill() -> void:
t.finished.connect(siren.queue_free)
var meshes: Array[MeshInstance3D]
if shatter_scene:
var shatter: Node3D = shatter_scene.instantiate()
get_tree().current_scene.add_child(shatter)
shatter.global_transform = mesh.global_transform
var rbs := shatter.get_child(1).get_children()
for rb: RigidBody3D in rbs:
var dir = damager_pos.direction_to(rb.global_position)
rb.apply_impulse(dir * 17)
rb.collision_layer = 0
meshes.push_back(rb.get_child(1))
var t2 := shatter.create_tween()
var first := true
t2.tween_interval(1)
for m in meshes:
var t3 = t2
if not first: t3 = t2.parallel()
t3.tween_property(m, "transparency", 1., 0.5)
first = false
t2.finished.connect(shatter.queue_free)
SignalBus.enemy_destroyed.emit()
@ -79,7 +109,7 @@ func hit(proj: Node3D, damage: float) -> bool:
if invulnerable: return true
health -= damage
if health <= 0:
kill()
kill(proj.global_position)
else:
if proj is PlayerProjectile: