extends Area3D var parent: PoliceCar func _ready() -> void: assert(get_parent() is PoliceCar) parent = get_parent() func hit(proj: Node3D, _damage: float) -> bool: if proj == null: return false if proj is not PlayerProjectile: return false var projectile := proj as PlayerProjectile if not projectile.can_hit_weak_points: return false var angle := projectile.velocity.angle_to(-parent.velocity) var weak_point_hit := rad_to_deg(angle) < 25. if weak_point_hit: var explosion := preload("res://player/explosion/explosion.tscn").instantiate() explosion.position = parent.position explosion.scale = Vector3.ONE * 1.5 parent.add_sibling(explosion) var label_vfx := preload("res://utils/label_vfx/label_vfx.tscn").instantiate() label_vfx.position = parent.position parent.add_sibling(label_vfx) parent.kill(proj.global_position) SignalBus.perfect_shot_hit.emit() return weak_point_hit