[RESOLU] Création mesh séparé

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Frederic
Messages : 36
Inscription : 24 Déc 2021 18:25

[RESOLU] Création mesh séparé

Message par Frederic » 30 Déc 2021 21:07

Bonsoir l 'unity team.

Pour résumer,

j'ai une méthode qui me créer des carrés (dessin du bas) au sol mis bout à bout quand je me déplace dans ma scène quand j'active un bouton par rapport à ma position.
A un moment je relâche le bouton, je continu à me déplacer dans ma scène et je reclique sur le bouton, je souhaiterais que reprendre la création de mes carrés(dessin du haut) a partir de mon nouvel emplacement et c'est là que JE bug, c'est un problème d algorithmique .

Quoi mettre dans mes triangle pour un nouveau départ, est-ce possible ?

(mes triangles et vertex sont ajoutés dans deux listes)

Code : Tout sélectionner

 public void Generate2 (Vector3 PointG,Vector3 PointD) 
    {

        IncrementNombre = IncrementNombre +1;     
        GetComponent<MeshFilter>().mesh = mesh = new Mesh();   
        mesh.Clear() ;

        if (PremierPoint == true)
        {
            vertex.Add(PointG);
        }
            else
            {
                vertex.Add(PointG); 
            } 


        if (PremierPoint == true)
        {
            vertex.Add(PointD); 
            PremierPoint = false;
        }
            else
            {
                vertex.Add(PointD); 

                    triangle.Add(Zero + IncrementTriangle); 
                    triangle.Add(Deux + IncrementTriangle); 
                    triangle.Add(Un + IncrementTriangle); 
                    triangle.Add(Un + IncrementTriangle); 
                    triangle.Add(Deux + IncrementTriangle); 
                    triangle.Add(Trois + IncrementTriangle); 
                    mesh.vertices = vertex.ToArray();
                    mesh.triangles = triangle.ToArray();
                    IncrementTriangle =IncrementTriangle + 2 ;
            }
Image

Merci pour votre imagination ;-)
Pièces jointes
carre.png
carre.png (5.51 Kio) Consulté 1100 fois
Dernière édition par Frederic le 10 Jan 2022 22:00, édité 2 fois.

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

Re: Création mesh séparé

Message par Max » 31 Déc 2021 14:40

Bonjour,
Frederic a écrit :
30 Déc 2021 21:07
Quoi mettre dans mes triangle pour un nouveau départ, est-ce possible ?

(mes triangles et vertex sont ajoutés dans deux listes)
Tu pourrais regarder du coté des Submesh.
Un exemple d'utilisation: https://answers.unity.com/questions/143 ... ample.html
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

Frederic
Messages : 36
Inscription : 24 Déc 2021 18:25

Re: Création mesh séparé

Message par Frederic » 03 Jan 2022 13:50

Merci, je vais étudier ça

Frederic
Messages : 36
Inscription : 24 Déc 2021 18:25

Re: Création mesh séparé

Message par Frederic » 10 Jan 2022 21:10

C'est pas propre mais fonctionnel

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class EssaiMesh : MonoBehaviour
{
   public int IncrementTriangle = 0 ;
public List<Vector3> vertex = new List<Vector3>(); 
public List<int> triangle = new List<int>(); 






public void essai()
    {
        GameObject MorceauCouverture = new GameObject();
        MeshRenderer meshrenderer = MorceauCouverture.AddComponent<MeshRenderer>();
        MeshFilter meshFilter = MorceauCouverture.AddComponent<MeshFilter>();
        Mesh mesh = meshFilter.mesh;
        MorceauCouverture.GetComponent<MeshFilter>().mesh = mesh = new Mesh();  


        vertex.Add(new Vector3 (0,0.01f,0)); 
        vertex.Add(new Vector3 (5,0.01f,0));
        vertex.Add(new Vector3 (0, 0.01f, 5));
        vertex.Add(new Vector3 (5, 0.01f, 5));

        triangle.Add(0 + IncrementTriangle); 
        triangle.Add(2 + IncrementTriangle); 
        triangle.Add(1 + IncrementTriangle); 
        triangle.Add(1 + IncrementTriangle); 
        triangle.Add(2 + IncrementTriangle); 
        triangle.Add(3 + IncrementTriangle);

        IncrementTriangle =IncrementTriangle + 4 ;

        mesh.Clear() ;
        mesh.vertices = vertex.ToArray();
        mesh.triangles = triangle.ToArray();




        vertex.Add(new Vector3 (10,0.01f,10)); 
        vertex.Add(new Vector3 (15,0.01f,10));
        vertex.Add(new Vector3 (10, 0.01f,15));
        vertex.Add(new Vector3 (15, 0.01f,15));
  
        triangle.Add(0 + IncrementTriangle); 
        triangle.Add(2 + IncrementTriangle); 
        triangle.Add(1 + IncrementTriangle); 
        triangle.Add(1 + IncrementTriangle); 
        triangle.Add(2 + IncrementTriangle); 
        triangle.Add(3 + IncrementTriangle);

        IncrementTriangle =IncrementTriangle + 4 ;

        mesh.Clear() ;
        mesh.vertices = vertex.ToArray();
        mesh.triangles = triangle.ToArray();





        vertex.Add(new Vector3 (20,0.01f,20)); 
        vertex.Add(new Vector3 (25,0.01f,20));
        vertex.Add(new Vector3 (20, 0.01f,25));
        vertex.Add(new Vector3 (25, 0.01f,25));


        triangle.Add(0 + IncrementTriangle); 
        triangle.Add(2 + IncrementTriangle); 
        triangle.Add(1 + IncrementTriangle); 
        triangle.Add(1 + IncrementTriangle); 
        triangle.Add(2 + IncrementTriangle); 
        triangle.Add(3 + IncrementTriangle);


        mesh.Clear() ;
        mesh.vertices = vertex.ToArray();
        mesh.triangles = triangle.ToArray();        

    }
}

Répondre

Revenir vers « Scripting »