Bonjour !
Jai crée une fonction dans un script me permettant de faire apparaitre un morceau de terrain en 2d generé aléatoirement (en utilisabt des prefabs quand meme).
Mon probleme et que jai besoin dun element declencheur de cette fonction (en loccurence le personnage qui avance trop loin de la zone generėe) ainsi que de pouvoir desactiver les morceaux de niveau trop eloignés.
Alors en gros il me manque plus qua savoir comment lancer la fonction sur la bonne position pour faire apparaitre le morceaux de terrain ainsi que comment faire reaparaaitre et disparaitre les morceaux trop eloignés.
Jespere avoir ete clair et mercidavance !
Thibault.
C# generation infinie terrain 2d RESOLU
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :
Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé
Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie
Exemple :
[DB-RS] Mouvement perso multijoueur
-
- Messages : 51
- Inscription : 04 Juin 2015 17:57
C# generation infinie terrain 2d RESOLU
Dernière édition par construkid le 18 Août 2016 13:53, édité 1 fois.
Re: C# generation infinie terrain 2d
Je connais pas la 2D sous unity mais en
3D il y a le vector3.distance qui permet
De mesurer une distance entre deux objets
Si le terrain est plus loin que x unités il est
Détruit et un autre est instancié par exemple
3D il y a le vector3.distance qui permet
De mesurer une distance entre deux objets
Si le terrain est plus loin que x unités il est
Détruit et un autre est instancié par exemple
-
- Messages : 152
- Inscription : 15 Août 2013 16:47
Re: C# generation infinie terrain 2d
Juste une idée, mais tu n'a besoin de générer du terrain que dans la direction ou se déplace ton personnage donc ça te donne une direction x,y pour le créer. Tout ce qui est a l'opposé de cette direction et qui n'est plus visible est préposable a la suppression.Si le décors est composé de carré ça te donne aussi du coup des ligne et des colonnes et donc un maximum a droite et a gauche du personnage et idem pour le haut et la bas. Après pour unity, il y a peut être plus simple.
-
- Messages : 51
- Inscription : 04 Juin 2015 17:57
Re: C# generation infinie terrain 2d
@dan44180 merci pour la fonction je vais essayer.
@megablast enfait le jôueur peut se deplacer dans tout les sens en x et en y ducoup il me faut generer dans les deux sens et masquer egalement dans les deux sens en x.
EDIT : @dan44180 sa marche parfaitement par contre si je change juste le layer des sprites pour les cacher, ça améliorera les performances ou je dois les desactiver?
@megablast enfait le jôueur peut se deplacer dans tout les sens en x et en y ducoup il me faut generer dans les deux sens et masquer egalement dans les deux sens en x.
EDIT : @dan44180 sa marche parfaitement par contre si je change juste le layer des sprites pour les cacher, ça améliorera les performances ou je dois les desactiver?
Re: C# generation infinie terrain 2d
je ne connais pas du tout la 2D unity donc je ne sais pas mais tu peux peut etre desactiver les sprite avec un setactive(false);
Re: C# generation infinie terrain 2d
Salut,
Si tu caches juste ton layer les objets existerons encore. Leur positions serons encore calculés et les boucles internes serons encore actives. Donc au niveau perf' c'est pas très bon. Je te conseil peut être plus de les désactiver.
Après si tu veux encore plus optimiser ton truc, tu peux te faire un pool d'objets si c'est de la génération procédurale assez simple avec pas trop d'éléments. Quand tu désactives ton objet parce que ton player est trop loin, tu met ton objet dans un espèce de tableau qui contient tous les éléments désactivés et quand tu dois régénérer un bout de terrain, tu vas piocher dans ces sprites pour voir si tu ne peux pas réutiliser des éléments.
Ca évite le gaspillage de ressources avec des Instantiate et des Destroy. Quitte à ce que tu te dise que tu ne peux avoir que X objets en même temps dans ta pool et si tu as atteins ton maximum d'objets stockés tu commences à remplacer comme dans une pile FIFO.
Si tu caches juste ton layer les objets existerons encore. Leur positions serons encore calculés et les boucles internes serons encore actives. Donc au niveau perf' c'est pas très bon. Je te conseil peut être plus de les désactiver.
Après si tu veux encore plus optimiser ton truc, tu peux te faire un pool d'objets si c'est de la génération procédurale assez simple avec pas trop d'éléments. Quand tu désactives ton objet parce que ton player est trop loin, tu met ton objet dans un espèce de tableau qui contient tous les éléments désactivés et quand tu dois régénérer un bout de terrain, tu vas piocher dans ces sprites pour voir si tu ne peux pas réutiliser des éléments.
Ca évite le gaspillage de ressources avec des Instantiate et des Destroy. Quitte à ce que tu te dise que tu ne peux avoir que X objets en même temps dans ta pool et si tu as atteins ton maximum d'objets stockés tu commences à remplacer comme dans une pile FIFO.
-
- Messages : 51
- Inscription : 04 Juin 2015 17:57
Re: C# generation infinie terrain 2d
Ok merci beaucoup je vais voir ce que je peux faire je vous tien au courant
EDIT: cest bon tout marche niquel merci a tous !
EDIT: cest bon tout marche niquel merci a tous !