28 lines
852 B
GDScript
28 lines
852 B
GDScript
extends Trap
|
|
@onready var ball : Area2D = $Area2D
|
|
var angular_speed = 0.3
|
|
var player_damage = 1
|
|
var enemy_damage = 10
|
|
@onready var dmg_id = Global.next_dmg_id
|
|
var id_refreshing = false
|
|
|
|
func _ready() -> void:
|
|
# Randomize starting position and rotation direction
|
|
rotate(randf() * TAU)
|
|
angular_speed = angular_speed * (2 * randi_range(0,1) - 1)
|
|
|
|
func _process(delta: float) -> void:
|
|
rotate(angular_speed * delta * TAU)
|
|
for target in ball.get_overlapping_areas():
|
|
damage_target(target)
|
|
|
|
for target in ball.get_overlapping_bodies():
|
|
damage_target(target)
|
|
|
|
func damage_target(target: CollisionObject2D):
|
|
# Targets are knocked away from the ball
|
|
var dir = (ball.global_position - target.global_position).normalized()
|
|
if(target.get_collision_layer_value(3)):
|
|
target.hurt(player_damage, dir)
|
|
else:
|
|
target.hurt(enemy_damage, 2.5*dir, dmg_id)
|