Level Builder

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Level Builder

Message par DJ-OMZ » 06 Nov 2018 15:37

Bonjour,

Alors voila, je pèche complétement sur une fonctionnalité que j'aimerais donner a mon jeu : le fait de pouvoir créer son propre niveau.

Pour vous donner une idée, sur les jeux de village de guerre style clash of clans, vous pouvez créer votre structure, a partir d'objets que vous avez en votre possession (les murs, tours de combats, le tralala).

Dans mon cas, j'ai le sol qui peut être de 3 types différents, et des objets a mettre dessus, rien de plus, mais je ne sais pas du tout comment m'y prendre pour faire ça...

Existe-t-il des tutos sur des jeux similaires ?

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Level Builder

Message par djulio74 » 06 Nov 2018 15:55

Que cherche tu? comment faire un éditeur ou comment pouvoir sauvegarder les données?

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Level Builder

Message par DJ-OMZ » 06 Nov 2018 16:05

djulio74 a écrit :
06 Nov 2018 15:55
Que cherche tu? comment faire un éditeur ou comment pouvoir sauvegarder les données?
Les 2 :/

Pour le moment je tente de faire un editeur...
J'ai un cube, il représente le sol, mais il peut avoir 2 états différents (donc 3 au total, le sol, la glace, ou l'escalier).
J'essaie de lui donner un script avec un booléen isStairs et isIce, il doit pouvoir changer d'état et de mesh selon ce que le joueur choisi.
Ce cube peut également monter ou descendre sur l'axe y de la valeur d'un entier (avec un max et un min).

Est-ce que vous connaissez un moyen de dire "si l'objet est cliqué" puis "si c'est un autre qui est cliqué" ? pour ajouter les outils monter, descendre, et les booléens, et que ces outils agissent sur le cube selectionné... :triste1:

Edit : l'escalier peut egalement etre tourné sur l'axe y donc rotation 0, 90, 180 ou 270.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Level Builder

Message par djulio74 » 06 Nov 2018 16:16

Pour savoir si l'object est cliqué, il faut qu'il ai un collider, ensuite regarde du coté de OnMouse Down/Over/Enter/Exit...
Tu aura déjà pas mal de piste je pense

Tu cherche a faire tout ça en mode Play je suppose ( si tu veux les autres puissent créer) ?
Il te faudra aussi de GUI par exemple, pour pouvoir assigner les paramètre souhaiter.

En gros avec le OnMouseDown, tu peux récupérer le GameObject sur lequel tu as cliqué.
Sur ton GameObject tu as un script, qui affiche des GUI correspondant au paramètres qui lui sont propre et qui permettent de le modifier.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Level Builder

Message par DJ-OMZ » 06 Nov 2018 16:20

djulio74 a écrit :
06 Nov 2018 16:16

Sur ton GameObject tu as un script, qui affiche des GUI correspondant au paramètres qui lui sont propre et qui permettent de le modifier.
Pour ce qui est du clic, pas de soucis, mais comment lui dire "lorsque tu n'est plus sélectionné" ?

Parce que ici, si je clique sur 2 gameObjects différents l'un après l'autre, il faut que les GUI du premier disparaissent lorsque je clique sur le 2ème.

EDIT : Oui c'est bien pour que les joueurs puissent créer leur niveau.

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Level Builder

Message par djulio74 » 06 Nov 2018 16:44

Perso je ferai un script dédié a l'éditeur, avec une variable static GameObject Selected:, sur un GameObject unique, et un script de sélection sur chacun de GameObject sélectionnable.
lorsque tu clique sur un object, tu assigne au script Editeur le GameObject qui a été cliqué pour la variable Selected, et c'est ce script Editeur qui s'occupera d'afficher GUI et modifier le GameObject selectionné. Dès que tu cliquera sur un autre gameObject, , Selected changera et le script affichera le bon GUI

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Level Builder

Message par DJ-OMZ » 06 Nov 2018 16:52

djulio74 a écrit :
06 Nov 2018 16:44
Perso je ferai un script dédié a l'éditeur, avec une variable static GameObject Selected:, sur un GameObject unique, et un script de sélection sur chacun de GameObject sélectionnable.
lorsque tu clique sur un object, tu assigne au script Editeur le GameObject qui a été cliqué pour la variable Selected, et c'est ce script Editeur qui s'occupera d'afficher GUI et modifier le GameObject selectionné. Dès que tu cliquera sur un autre gameObject, , Selected changera et le script affichera le bon GUI
C'est exactement ce que je suis en train de faire :lol: ça me rassure !

Je vous tiendrais au courant de mon avancée. (Après, ma version vous donnera probablement des vertiges tant on aurait pu faire mieux mais bon :-D )

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Level Builder

Message par djulio74 » 06 Nov 2018 17:10

Oui pas de soucis montre nous ça quand tu voudra. ;-)

tu peux aussi choisir quel type de GUI ( quelles type de donnée ) à afficher (modifier) en te servant du tag de tes gameObject.

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Avatar de l’utilisateur
DJ-OMZ
Messages : 129
Inscription : 11 Jan 2017 13:15

Re: Level Builder

Message par DJ-OMZ » 06 Nov 2018 19:49

J'aimerais savoir comment faire pour transformer mon gameObject cube en mon gameObject escalier lorsque je veux le faire...
Dans le script de mon gameObject, j'ai mis :

Code : Tout sélectionner

public GameObject grass;
public GameObject stairs;
public GameObject ice;

void Update () {
        if (isIce)
        {
            transform.GetComponent<MeshFilter>().mesh = ice.GetComponent<MeshFilter>().sharedMesh;
        }
}
J'ai eu une erreur avec mesh et l'erreur dit d'utiliser sharedMesh, ce qui ne donne rien.
En plus mon gameObject stairs n'a pas de mesh, c'est une pile de cubes enfants qui forment l'escalier...
Comment faire ?

djulio74
Messages : 682
Inscription : 19 Déc 2009 22:55

Re: Level Builder

Message par djulio74 » 06 Nov 2018 19:58

tu donne la réponse toi même " ton Gameobject stair n'as pas de mesh". donc impossible de lui en assigné un... ;-)
peut être plus simple de modéliser tes différents objet en un seul mesh ( blender ou autre)

de plus si tu met ton changement de mesh en Update, ça va ramer sec, vu que tu vas demander au moins 60 fois par seconde de changer le mesh...

______________________________________________________________
\_______________________ Impossible is nothing _______________________/

Répondre

Revenir vers « Unity le logiciel »