Browse Source

:tada: Rend le javelot destructeur

DricomDragon 10 months ago
parent
commit
129508533a

+ 25 - 0
godot/composants/objets/javelot/javelot.gd

@@ -0,0 +1,25 @@
+class_name Javelot
+extends Node2D
+## Laser triangulaire qui détruit les briques sur son passage
+
+
+const vitesse_ascendante: float = 1000.0 # px/sec
+const degats: int = 3
+
+
+func _physics_process(delta: float) -> void:
+	position.y -= delta * vitesse_ascendante
+
+
+func _auto_detruire() -> void:
+	queue_free()
+
+
+func _quand_corps_entre_dans_zone_destructive(corps: Node2D) -> void:
+	if corps is Brique: # toujours vrai si calque collision actif
+		var brique: Brique = corps as Brique
+		brique.frapper(degats)
+
+
+func _quand_verificateur_visibilite_detecte_sortie_ecran() -> void:
+	_auto_detruire()

+ 21 - 1
godot/composants/objets/javelot/javelot.tscn

@@ -1,10 +1,30 @@
-[gd_scene load_steps=2 format=3 uid="uid://cotwb2mk31lpx"]
+[gd_scene load_steps=4 format=3 uid="uid://cotwb2mk31lpx"]
 
 [ext_resource type="Texture2D" uid="uid://iahia86rgssf" path="res://composants/objets/javelot/mcJavelot.png" id="1_00b17"]
+[ext_resource type="Script" path="res://composants/objets/javelot/javelot.gd" id="1_cih4f"]
+
+[sub_resource type="RectangleShape2D" id="RectangleShape2D_0j83v"]
+size = Vector2(14, 14)
 
 [node name="Javelot" type="Node2D"]
+script = ExtResource("1_cih4f")
 
 [node name="Image" type="Sprite2D" parent="."]
 texture = ExtResource("1_00b17")
 centered = false
 offset = Vector2(-14, -14)
+
+[node name="ZoneDestructive" type="Area2D" parent="."]
+position = Vector2(0, 8.63)
+collision_layer = 32
+collision_mask = 16
+
+[node name="FormeZone" type="CollisionShape2D" parent="ZoneDestructive"]
+rotation = 0.785398
+shape = SubResource("RectangleShape2D_0j83v")
+
+[node name="VerificateurVisibilite" type="VisibleOnScreenNotifier2D" parent="."]
+rect = Rect2(-16, -16, 32, 300)
+
+[connection signal="body_entered" from="ZoneDestructive" to="." method="_quand_corps_entre_dans_zone_destructive"]
+[connection signal="screen_exited" from="VerificateurVisibilite" to="." method="_quand_verificateur_visibilite_detecte_sortie_ecran"]

+ 4 - 1
godot/composants/pouvoirs/pouvoir_javelot.gd

@@ -4,7 +4,7 @@ extends PouvoirBase
 
 
 const EruptionScene: PackedScene = preload("res://effets/eruption/eruption.tscn")
-#const JavelotScene: PackedScene = preload(todo)
+const JavelotScene: PackedScene = preload("res://composants/objets/javelot/javelot.tscn")
 
 
 func declencher_pouvoir(arbre_scene: SceneTree) -> void:
@@ -12,6 +12,9 @@ func declencher_pouvoir(arbre_scene: SceneTree) -> void:
 	for raquette in arbre_scene.get_nodes_in_group("groupe_des_raquettes"):
 		var lancement: Node2D = EruptionScene.instantiate()
 		raquette.add_child(lancement)
+		var javelot: Javelot = JavelotScene.instantiate()
+		javelot.position = raquette.position
+		raquette.add_sibling(javelot)
 
 
 func couleur_principale() -> Color:

+ 1 - 0
godot/project.godot

@@ -54,6 +54,7 @@ ui_clic={
 2d_physics/layer_3="mur"
 2d_physics/layer_4="capsule"
 2d_physics/layer_5="brique"
+2d_physics/layer_6="pouvoir"
 
 [rendering]