Files
foxfox/scripts/breakable_block.gd

37 lines
942 B
GDScript

extends StaticBody2D
## Кирпичный блок: разбивается при ударе снизу, даёт очки и обломки.
var broken: bool = false
func _ready() -> void:
collision_layer = 1
collision_mask = 1
func on_hit_from_below() -> void:
if broken:
return
broken = true
GameManager.add_score(50)
_spawn_debris()
queue_free()
func _spawn_debris() -> void:
var parent := get_parent()
if parent == null:
return
for i in range(4):
var debris := RigidBody2D.new()
debris.collision_layer = 0
debris.collision_mask = 0
var cs := CollisionShape2D.new()
var shape := RectangleShape2D.new()
shape.size = Vector2(8, 8)
cs.shape = shape
debris.add_child(cs)
debris.global_position = global_position
debris.linear_velocity = Vector2(-120.0 if i < 2 else 120.0, -260.0)
parent.add_child(debris)
var t := debris.create_tween()
t.tween_interval(0.6)
t.tween_callback(debris.queue_free)