29 lines
962 B
GDScript
29 lines
962 B
GDScript
extends Node2D
|
|
class_name Attack
|
|
|
|
@onready var cpu_particles_2d: CPUParticles2D = $CPUParticles2D
|
|
@onready var area_2d: Area2D = $Area2D
|
|
@onready var collision_shape_2d: CollisionShape2D = $Area2D/CollisionShape2D
|
|
|
|
var initiator: Entity
|
|
|
|
func set_initiator(entity: Entity) -> void:
|
|
position = entity.position
|
|
initiator = entity
|
|
|
|
func _ready() -> void:
|
|
cpu_particles_2d.emitting = true
|
|
cpu_particles_2d.color = initiator.color
|
|
collision_shape_2d.shape.radius = initiator.attack_pow
|
|
cpu_particles_2d.initial_velocity_min = float(initiator.attack_pow) * 4.0
|
|
cpu_particles_2d.initial_velocity_max = float(initiator.attack_pow) * 4.0
|
|
|
|
func _on_cpu_particles_2d_finished() -> void:
|
|
var collisions := area_2d.get_overlapping_bodies()
|
|
for object in collisions:
|
|
if object is Entity and object != initiator:
|
|
var color_diff = object.color - initiator.color
|
|
if abs(color_diff.r) + abs(color_diff.g) + abs(color_diff.b) > 0.5:
|
|
object.hit()
|
|
queue_free()
|