changes + enemy particles
This commit is contained in:
parent
457de8dcaa
commit
0f8f737bc0
12 changed files with 2949 additions and 24 deletions
|
|
@ -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:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue