Création d'une zone en surbrillance

Pour les scripts écrits en C#
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
Nathrel
Messages : 14
Inscription : 29 Juin 2019 11:41

Création d'une zone en surbrillance

Message par Nathrel » 18 Août 2019 12:47

Bonjour,
J'aimerai créer une zone de récolte (aux contours visible ou en surbrillance) dans mon jeu 3D. Le problème, c'est que j'ai beau chercher j'ai qu'une seule façon de faire qui me vient à l'esprit : Celle de créer une objet 3D (Sphère), réduire son échelle de façon à ce que ça soit qu'un cercle et la placer sur mon terrain. Le souci c'est que ce cercle n'épouse pas les formes de mon terrain (les collines, les crevasses, ...). Cette solution fonctionne uniquement sur un terrain plat.
Avez vous une idée de comment je pourrais créer une zone en surbrillance qui match bien avec mon terrain ?
Merci beaucoup !
Pièces jointes
terrain_zone.PNG
terrain_zone.PNG (181.78 Kio) Consulté 3867 fois

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Création d'une zone en surbrillance

Message par Max » 18 Août 2019 13:18

Bonjour,

regarde du coté des decals, cela peux être une alternative intéressante.
Unity+terrain+decals
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Nathrel
Messages : 14
Inscription : 29 Juin 2019 11:41

Re: Création d'une zone en surbrillance

Message par Nathrel » 18 Août 2019 20:27

Je t'avoue qu'après avoir cherché toute l'après midi je n'ai rien trouver de concluant concernant les decals. Hormis le fait qu'il faut un Asset (et j'aimerai éviter d'en utiliser). J'ai peut être mal compris , mais en tout cas je ne trouve pas comment le faire de moi même.
Merci !

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Création d'une zone en surbrillance

Message par Max » 18 Août 2019 20:56

Le principe est d'arriver à plaquer sur ton terrain une surface plane (genre par exemple la primitive Plane proposé par Unity). Pour arriver grosso modo à ceci:
Image

L'une des solutions est de prendre chaque vertex du maillage du plane pour caler sa composante Y sur la hauteur terrain. Ce n'est pas hyper esthétique dès que l'on attaque des zone quasi-verticales du terrain, mais pour le reste, généralement cela fait l'affaire..
Pour la doc, tu peux regarder du coté du MeshFilter.mesh pour la partie Vertex, et aussi du coté de Terrain.SampleHeight pour ce qui est de récupérer les hauteurs terrain.
Après, tu as juste à choisir le shader qui va bien en fonction de ton besoin.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Nathrel
Messages : 14
Inscription : 29 Juin 2019 11:41

Re: Création d'une zone en surbrillance

Message par Nathrel » 18 Août 2019 21:02

C'est exactement ça !

Nathrel
Messages : 14
Inscription : 29 Juin 2019 11:41

Re: Création d'une zone en surbrillance

Message par Nathrel » 24 Août 2019 13:21

Bonjour !
Cette fois ci j'ai un 'autre problème :gene: . J'ai mon script qui à l'air de fonctionner (bien que le rendu ne soit pas très propre, je suis d'ailleurs toujours ouvert a d'autres astuces) j'ai voulu tester avec une capsule plate pour avoir vraiment une forme ronde, et ce même script ne fonctionne pas sur cet objet là, auriez vous une idée d'où ça peut venir?
Merci beaucoup
Pièces jointes
plane.PNG
plane.PNG (177.95 Kio) Consulté 3708 fois
capsule.PNG
capsule.PNG (142.29 Kio) Consulté 3708 fois

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Création d'une zone en surbrillance

Message par Max » 24 Août 2019 13:29

Bonjour,

tu aurais du poster ton code.
Sinon, ton objet ne change pas, tu modifies uniquement les vertices, donc le collider lui reste le même (la grille verte), et la position de ton objet ne change pas non plus (d'où le transform situé où il est sur ton screen). C'est tout a fait normal.
Là donc ton soucis est que la forme de ton mesh semble en effet bien correspondre au relief du terrain, mais la hauteur des tes vertices (composante Y) n'est pas la bonne.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Nathrel
Messages : 14
Inscription : 29 Juin 2019 11:41

Re: Création d'une zone en surbrillance

Message par Nathrel » 24 Août 2019 14:13

Autant pour moi, le voici !

(Si jamais tu veux copier coller)

Code : Tout sélectionner

    Mesh mesh;
    int p;
    Vector3 pos;
    Vector3[] vertices;
    Vector3 mPos;

    void Start()
    {
        
        mesh = GetComponent<MeshFilter>().mesh;
        vertices = mesh.vertices;
        p = 0;
        while (p < vertices.Length)
        {
            mPos = new Vector3(vertices[p].x, vertices[p].y, vertices[p].z); 
            mPos += transform.position + transform.lossyScale;
            Debug.Log(mPos);
            vertices[p] += new Vector3(0, Terrain.activeTerrain.SampleHeight(mPos), 0);
            Debug.Log(vertices[p]);
            p++;
        }
        mesh.vertices = vertices;
        mesh.RecalculateNormals();
        pos = transform.position; 
        pos.y = Terrain.activeTerrain.SampleHeight(transform.position);
        transform.position = pos;
    }

Avatar de l’utilisateur
Max
Messages : 8771
Inscription : 30 Juil 2011 13:57
Contact :

Re: Création d'une zone en surbrillance

Message par Max » 24 Août 2019 15:53

Re,

Tu ajoutes à la composante Y déjà existante la valeur de hauteur du terrain.
Alors qu'il faudrait que la composante Y soit égale à celle-ci (légèrement plus haute pour éviter le phénomène de superposition).

PS: pas de screen pour les scrips. Utilise les balises prévues (comme indique dans la FAQ, lien dans ma signature).
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Nathrel
Messages : 14
Inscription : 29 Juin 2019 11:41

Re: Création d'une zone en surbrillance

Message par Nathrel » 24 Août 2019 16:19

Cette solution fait bien re sortir mon Transform (et le collider) du sol , mais j'ai toujours mon Mesh Renderer en l'air. Comme ceci :
Pièces jointes
plane.PNG
plane.PNG (511.62 Kio) Consulté 3667 fois

Répondre

Revenir vers « (C#) CSharp »