Browse Source

Libere une capsule quand la brique eclate

DricomDragon 11 months ago
parent
commit
aa724383d9

+ 12 - 0
godot/composants/objets/brique/brique.gd

@@ -4,6 +4,7 @@ extends StaticBody2D
 
 
 const EclatementScene: PackedScene = preload("res://effets/eclatement_brique/eclatement_effet.tscn")
+const CapsuleScene: PackedScene = preload("res://composants/objets/capsule/capsule.tscn")
 const nombre_de_vies_max: int = 4
 
 ## Le nombre de coups necessaires pour detruire la brique.
@@ -29,11 +30,22 @@ func _montrer_nombre_vies() -> void:
 
 func _mourir() -> void:
 	queue_free()
+	_eclater()
+	_liberer_capsule()
+
+
+func _eclater() -> void:
 	var effet_eclatement: Node2D = EclatementScene.instantiate()
 	effet_eclatement.position = self.position
 	add_sibling(effet_eclatement)
 
 
+func _liberer_capsule() -> void:
+	var capsule: Node2D = CapsuleScene.instantiate()
+	capsule.position = self.position
+	add_sibling(capsule)
+
+
 func set_nombre_de_vies(nb: int) -> void:
 	nombre_de_vies = nb
 	_montrer_nombre_vies()

+ 17 - 0
godot/composants/objets/capsule/capsule.gd

@@ -0,0 +1,17 @@
+class_name Capsule
+extends Node2D
+## Contient un pouvoir qui se declenche au contact de la raquette
+
+
+const VITESSE_DESCENTE: float = 50.0 # px / sec
+
+
+func _physics_process(delta: float) -> void:
+	_descendre(delta)
+
+
+func _descendre(delta: float) -> void:
+	position.y += VITESSE_DESCENTE * delta
+
+
+# todo : auto-destruction si hors-limite

+ 24 - 0
godot/composants/objets/capsule/capsule.tscn

@@ -0,0 +1,24 @@
+[gd_scene load_steps=4 format=3 uid="uid://byxjroc2wrbgg"]
+
+[ext_resource type="Script" path="res://composants/objets/capsule/capsule.gd" id="1_so3qe"]
+[ext_resource type="Texture2D" uid="uid://chi8i5odmp41w" path="res://icon.svg" id="2_pwcvv"]
+
+[sub_resource type="CapsuleShape2D" id="CapsuleShape2D_58m61"]
+radius = 7.0
+height = 28.0
+
+[node name="Capsule" type="Node2D"]
+script = ExtResource("1_so3qe")
+
+[node name="Image" type="Sprite2D" parent="."]
+position = Vector2(1, 1)
+scale = Vector2(0.218, 0.109)
+texture = ExtResource("2_pwcvv")
+centered = false
+
+[node name="ZoneActivation" type="Area2D" parent="."]
+position = Vector2(15, 8)
+
+[node name="FormeZone" type="CollisionShape2D" parent="ZoneActivation"]
+rotation = 1.5708
+shape = SubResource("CapsuleShape2D_58m61")