Tower Defense chemin

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

Tower Defense chemin

Message par blix » 27 Avr 2021 01:44

Bonjour,
je tente un petit proto de Tower Defense pour amusement,
j'aimerais surtout me concentrer sur la création du level (C#)
J'aurais besoin de vos suggestions.


L'idée serait de créer le level, le chemin, à partir de pièces positionnées comme des tuiles,
il n'y aurait que deux pièces, une ligne droite et un arc de cercle.
Chaque pièce à une direction, et peut-être pivotée & positionnée pour créer le chemin.

J'imagine avoir ces pièces en préfab et les positionner sur la grille unity,
histoire d'obtenir quelque chose comme ceci :

Image


L'idée ensuite, c'est qu'au chargement du level,
le chemin soit déduis du positionnement des préfab


il faudrait que je puisse récupérer le positionnement des préfab sur la grille (et leur sens)
puis je crée un tableau pour stoker ses informations,
à partir de ce tableau,
je génère une succession de point (stockée dans un array)
qui deviendront mes cibles pour définir le mouvement des unités
(pour les arcs de cercle, ils seront décomposés en une succession de point)

J'obtiens alors un chemin qui donne ça :

Image


Je vois à peu près comment m'y prendre, j'ai déjà potassé certains aspects,
est-ce que la méthode vous semble correct?

Ma principale question du moment est :
Comment récupérer le positionnement des préfab et leur sens??

EDIT : en fait, il faudrait que je crée une liste dans un level manager
et que je glisse dans l'ordre, les préfab du level dans cette liste? non?



J'espère que mon explication n'est pas trop confuse,
Merci d'avance !
:] Blix

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: Tower Defense chemin

Message par jmhoubre » 27 Avr 2021 12:11

Bonjour,

tout d'abord un grand merci pour avoir clairement présenté ton problème et fait un effort de présentation. C'est tellement rare...
La méthode me semble correcte : on crée un niveau en dur, et au start on en déduit le chemin.
Une autre méthode consiste à générer procéduralement le chemin.

Pour construire ce chemin, ma première idée est d'inclure dans chacun de tes prefabs des repères, par exemple des empty enfants du prefabs.
Le petit bout droit aurait ainsi 2 empty, un à l'entrée, et un à la sortie.
Chaque virage aurait 5 empty (ou plus si tu veux améliorer la "résolution") : entrée et sortie, et 3 empty intermédiaires. La constitution de ton array de waypoints serait donc :

Code : Tout sélectionner

parcourir le chemin des prefabs
	pour chaque prefab
		pour chaque empty
			transformer ses coordonnées locales en coordonnées dans le monde
			stocker les coordonnées dans l'array
[Edit] En lisant ta réponse , je me suis aperçu d'un oubli dans le pseudo code. Il faudra s'assurer que les empty sont dans le bon ordre, ce qui doit être le cas si tu utilises transform.Getchild(). Sinon, il y a toujours le moyen de les tagger (Entry, Exit, WP1 ...) ou d'utiliser le nom de l'empty.

Pour la constitution du chemin des prefabs, oui : une liste ou un tableau, rempli manuellement et dans l'ordre, convient.
Dernière édition par jmhoubre le 27 Avr 2021 17:05, édité 1 fois.

Avatar de l’utilisateur
blix
Messages : 27
Inscription : 15 Nov 2015 17:30

Re: Tower Defense chemin

Message par blix » 27 Avr 2021 16:51

Bonjour jm, merci,
Oui, j'aime les choses bien présentées :-D


Merci pour ta réponse,
je vais essayer ça effectivement,
c'est juste après avoir posté ma question que j'ai pensé à la liste des préfab dans un manager,
ça me semble évident maintenant et plus simple.

J'imaginais au début une fonction qui scannerait la scène,
mais c'est un peu usine à gaz :cote:

Blix

siriusraine
Messages : 34
Inscription : 01 Mars 2017 21:53

Re: Tower Defense chemin

Message par siriusraine » 19 Mai 2021 12:07

tu aurais peut etre aussi la solution du navemesh et pathfinding

je ne sais pas comment se presentent tes tuiles mais tu aurais juste le point de depart et l'arrivee a lister

Répondre

Revenir vers « Scripting »