Leçon 8 : Suivre une cible ( l'ennemi)


Dans cette leçon nous allons permettre aux balle spawner par les tours de se diriger vers un ennemi, tel des missiles à tête chercheuse.
Actuellement l'ennemi entre dans la région de la tour. La tour sait donc quel ennemi viser... mais la balle, qui est un acteur différent, ne le sait pas !
Le but de cette leçon est de faire passer l'information de la tour à la balle.


1) Préparer la variable qui stockera la cible
Dans la balle créer une nouvelle variable appelé "cibledelaballe" (type : actor).
Cette variable a pour but de stocker la cible a viser. Pour l'instant la balle ne sais pas qui est cette cible.

2) Créer la fonction qui va permettre de faire passer l'information ( qui est la cible) de la tour à la balle.
Cette fonction doit être créer dans la balle, mais elle sera appelé par la tour

Créer la fonction : cette fonction prend deux paramètre self (%0) pour identifier la balle et ennemi à viser (%1) qui sera l'ennemi à viser sélectionner par la tour.

ranger cible bis.png

Le but est de ranger la cible (l'ennemi à viser) dans la variable de la balle cibledelaballe grace au block "set cibledelaballe to"
Pour cela Insérer simplement le code suivant


range la cible dans la variable.png


3) Utiliser la fonction pour faire passer la cible

Dans la tour, appeler la fonction que l'on vient de créer. Lui passer les bon paramètres afin d'envoyer la cible à la balle.
Pour cela ajouter la appelé la fonction custom que l'on vient de créer la cible est l'acteur qui vient de rentrer dans la zone de la tour : the actor
La balle vient d'être créée, il s'agit donc du "Last Created Actor"
envoie de la cible.png
Tester et vérifier que les prints s'affiche.


4) Viser la cible

Maintenant que nous avons la cible rangée dans la variable "cibledelaballe", il nous faut calculer la trajectoire entre la balle et sa cible.
Pour cela il faut créer de nouvelle variables dans la balle : dx et dy, qui correspond à la distance entre la balle et la cible.
Il faut ensuite calculer la valeur de ces variables à l'aide du code suivant (qui vient s'insérer au dessus du bloc "velocity mis en place à la leçon 7 dans la behavior de la balle) :

dx et dy.png

La direction de la balle va pouvoir être calculer. Nous allons remplacer la valeur 90 par le calcul.
Il s'agit d'un calcul trigonométrique utilisant la fonction atan2. A partir de la distance entre la balle et la cible, nous pouvons connaître l'angle que la balle va devoir suivre (en vert)
followin bullet .png

Tester : les balles doivent désormais suivre les ennemis qui entrent dans la zone et les toucher.