Messagerie


Instaurer un champ de vision à un objet ? [RÉSOLU]

ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
dimanche 9 décembre 2018 à 14:48
Hello tout le monde ! :)

Je reviens vous voir pour un truc dont je galère un peu à faire !

Je suis en train de créer un petit jeu "Tower Defense" like version Noël. Je pense que vous connaissez tous le principe, mais je le rappel quand même.

Le principe du jeu est que vous vous retrouvez dans un terrain auquel les ennemi essaient de parcourir la Map d'un point A à un point B en suivant un chemin prédéfini. Vous avez des "murs" auquel vous pouvez placer des genre de "tourelle" qui vont tirer sur les ennemi pour les empêcher de passer. La stratégie étant que vous devez bien réfléchir où vous devez placer vos tourelles de façon à ce qu'ils aient le plus large champ de vision possible afin qu'ils puissent dégommer un maximum d'ennemi.


Mon soucis, c'est que je bloque dans l'aspect "champ de vision" d'une tourelle. Je sais pas comment faire en sorte qu'une tourelle arrête de tirer sur un ennemi si ce dernier se trouve trop loin de lui. Actuellement, la tourelle va continuer à lui tirer dessus même si l'ennemi est à l'autre bout de la map, ce qui est pas très ergonomique comme jeu, surtout si la tourelle commence à tirer sur les ennemi les plus éloigner de lui alors qu'ils y en à de plus proche.

Du coup, savez-vous comment je peut placer une sorte de périmètre de vision mobile autour d'un objet ? (surtout que ce dernier n'a pas une position fixe selon où le joueur le place).

Par exemple, faire en sorte que si l'ennemi se retrouve dans un périmètre de 100x100 pixels (c'est un exemple) autour de la tourelle, là, elle commence à lui tirer dessus, et qu'elle arrête une fois que l'ennemi sort de ce périmètre.


Si vous avez une solution simple et ergonomique à ce problème, je vous remercierai infiniment !  :(
Modifié le dimanche 9 décembre 2018 à 18:48 par ValLoche23
conceptgame
429 messages
Fusion 2.5 Dev
Fusion 2.5+ Firefly Exporteur iOS Exporteur Android
dimanche 9 décembre 2018 à 15:46
Je vois deux solutions "simples", avec des niveaux de performance différentes suivant le nombre d'objets (tourelles):
1) Créer un disque de détection invisible suivant l'angle et la position de la tourelle. Lorsqu'une cible rentre dans la zone de détection (superposition), la tourelle s'oriente vers la cible et tire. Sinon elle ne tire pas.
2) Faire la même chose que 1) mais uniquement par calcul (calcul de la distance de la tourelle à la cible). Celle-ci devrait être plus performante puisque le nombre d'objets par tourelle est réduit drastiquement. 
ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
dimanche 9 décembre 2018 à 17:29
La solution est cool, mais justement, comment on procède pour calculer une distance entre deux objet ?
conceptgame
429 messages
Fusion 2.5 Dev
Fusion 2.5+ Firefly Exporteur iOS Exporteur Android
dimanche 9 décembre 2018 à 17:59
SI Distance(X( "tourelle" ), Y( "tourelle" ), X( "cible" ), X( "cible" )) < 30
ALORS …

Distance est disponible dans l'objet "Spécial".
ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
dimanche 9 décembre 2018 à 18:03
Merci beaucoup conceptgame, c'est sympa ! :)
ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
dimanche 9 décembre 2018 à 18:28
Ça à marcher !!

Merci beaucoup, je sais que je dois parfois vous ennuyer avec des questions un peu bête car il me manque pas mal de bases, mais vraiment, merci infinement !!
Modifié le dimanche 9 décembre 2018 à 18:48 par ValLoche23
ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 10 décembre 2018 à 06:08
Hello, j'ai de nouveaux un petit problème par rapport à cette question !

Voilà, tout marche à merveille quand il y a qu'un seule cible qui passe dans le périmètre de la tourelle. La tourelle la vise et lui tire dessus parfaitement comme le veux le code.

Malheureusement, j'ai remarqué que dès qu'il y a plusieurs cible en jeu passant par le périmètre de la tourelle, elle craque et s'immobilise et ne fais plus rien. Parfois, elle va viser et tirer sur une cible au hasard sans raison.

Pourtant, aucune cible n'a d'attribut supplémentaire par rapport à d'autre, elles sont tous nommé par le même qualifieurs, et il y a vraiment rien qui les différencie.

Du coup je comprend pas d'où proviens ce bug, et comment le régler.

Je vous met un extrait vidéo de mon problème, pour que vous voyiez bien le soucis que j'ai :



Voilà voilà, si vous avez des solutions, j'suis preneur ! ^^'
Patrice
2784 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 10 décembre 2018 à 09:10
Ben il va bien falloir lui dire lequel choisir s'il y en a plusieurs, sinon par défaut, il prend le dernier créé.
Pièces jointes
ValLoche23
1452 messages
Fusion 2.5 Dev Fusion 2.5
Firefly Exporteur UWP Exporteur iOS Exporteur Android Exporteur HTML5 Fusion 2.5+
lundi 10 décembre 2018 à 09:58
Je vois ! Je me doutais qu'il y avait quelque chose comme ça, j'eusse espérer que par l'utilisation de qualifieurs, la tourelle prendrait automatiquement à chaque fois pour cible l'un des ennemi sur son périmètre jusqu'à ce qu'ils y en ai plus, mais malheureusement les choses sont pas toujours aussi simple, ça fait partie du jeu ! xD

En tout cas, je vais check ta solution une fois de retour chez moi après le boulot, merci Patrice ! :)
fredetmumu
1384 messages

lundi 10 décembre 2018 à 10:36
peut être comme ça?
Pièces jointes
fredetmumu
1384 messages

lundi 10 décembre 2018 à 11:40
la boucle au debut ne sert a rien, il suffit en fait de rajouter un "choisir XXX au hasard dans ta condition"
Pièces jointes
Elefterov
20 messages
Fusion 2.5
dimanche 16 décembre 2018 à 15:50
Bonjour !

Merci pour la question posée et pour ses réponses.

Comment pourrait-on faire pour que la tourelle ne tire que sur la cible la plus proche ? (et non pas une au hasard parmi celles à portée)
fredetmumu
1384 messages

dimanche 16 décembre 2018 à 16:16
le principe est de faire une boucle et de donner a une valeur modifiable la distance entre tourelle et l'objet uniquement si cette distance est plus petite que la variable actuelle.

1- A= 10000
2 (boucle) si distance entre tourelle et actif < A ALORS :
                A=distance entre tourelle et actif
                B=valeur fixe de l'actif (ou autre moyen de definir l'actif le plus proche)

une fois la boucle terminée A contiendra la distance la plus courte et B la valeur fixe de l'actif
Modifié le dimanche 16 décembre 2018 à 16:43 par fredetmumu
Pièces jointes
Elefterov
20 messages
Fusion 2.5
dimanche 16 décembre 2018 à 18:52
Je crois que j'ai compris !
Manque plus que je teste ça, les boucles c'est pas évident.

Merci Fredetmumu !
fredetmumu
1384 messages

dimanche 16 décembre 2018 à 19:42
effectivement c'est pas évident, pour ma part je sais bien m'en servir mais j'ai toujours un peu de mal a savoir si une boucle est nécéssaire ou non, du coup j'essaie sans et si ça marche pas, j'en fais une...
Utilisateurs en ligne
  • Aucun utilisateur en ligne
  • 10 visiteurs au total

Derniers messages