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
Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: Création d'une zone en surbrillance

Message par Max » 24 Août 2019 17:06

personnellement, je partirais sur un code genre celui listé ci-dessous (écrit from scratch). A tester.
La fonction OnDrawGizmos est là pour une application directe dans l'éditeur.
(le scale du plane à 1)

Code : Tout sélectionner

[ExecuteInEditMode]
public class DecalTerrain2 : MonoBehaviour
{
    [SerializeField]
    private Terrain terrain;
    [SerializeField]
    private float delta = 0.15f;
    private Mesh mesh;
    private Vector3[] vertices;

    // Start is called before the first frame update
    void Start()
    {
        mesh = GetComponent<MeshFilter>().mesh;
        vertices = mesh.vertices;
        ChangeHeight();
    }

    // adapte la composante Y du plane
    void ChangeHeight()
    {
        Vector3 v;
        for (var i = 0; i < vertices.Length; i++)
        {
            Vector3 vpos = v = vertices[i];
            vpos += transform.position;
            v.y = terrain.SampleHeight(vpos) + delta - transform.position.y + terrain.transform.position.y;
            vertices[i] = v;
        }
        mesh.vertices = vertices;
        mesh.RecalculateBounds();
        mesh.RecalculateNormals();
    }

    void OnDrawGizmos()
    {
        ChangeHeight();
    }
     
}
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 23:44

Le souci reste le même, celui ci fonctionne que sur le Plane, et le mesh Collider au lieu d'etre sous le terrain se retrouve au dessus,et non à l'emplacement où se calle le Plane.

Car dans mon fonctionnement, je comptais creer une zone de récolte (en cercle) où tout les GameObject d'un certain tag serait référencer par le Collider Enter de cette zone.

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

Re: Création d'une zone en surbrillance

Message par Max » 25 Août 2019 10:08

Bonjour,

Pour avoir la forme que tu souhaites (un cercle par exemple), il ne faut pas jouer sur le mesh, mais sur la texture que tu vas appliquer. Idem pour le collider, qui je pense va servir de Trigger pour une détection de zone (sinon aucun intérêt d'en mettre un, le collider du terrain est la pour cela). Donc tu ajoutes après par exemple une SphereCollider, dont tu ajustes les valeurs:
Image
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 » 26 Août 2019 14:03

Pour le Collider c'est exactement ce qu'il me faut, en revanche je n'ai pas bien compris la partie où je ne dois pas jouer sur le mesh mais sur la texture que je dois appliquer, il faut que j'ajoute un composant a mon Plane? Masquer quelque chose ?

Merci

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

Re: Création d'une zone en surbrillance

Message par Max » 26 Août 2019 17:16

Nathrel a écrit :
26 Août 2019 14:03
je n'ai pas bien compris la partie où je ne dois pas jouer sur le mesh mais sur la texture que je dois appliquer, il faut que j'ajoute un composant a mon Plane? Masquer quelque chose ?
C'est au niveau du material de ton plane que cela se passe. Niveau shader tu passes par exemple en Cutout et tu choisis la texture qui te convient (avec une partie donc transparente).
Niveau doc -> StandardShaderMaterialParameterRenderingMode et
TransparentCutoutFamily
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 » 06 Sep 2019 20:10

Merci !
En revanche j'ai remarqué que quand je changé le scale de mon plane (et qu'il depasse 1) il ne prend pas bien la forme du terrain et passe en dessous. Tu saurai d'où cela peut venir?
Merci encore

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

Re: Création d'une zone en surbrillance

Message par Max » 06 Sep 2019 20:31

Bonsoir,
Nathrel a écrit :
06 Sep 2019 20:10
En revanche j'ai remarqué que quand je changé le scale de mon plane (et qu'il depasse 1) il ne prend pas bien la forme du terrain et passe en dessous. Tu saurai d'où cela peut venir?
Normal, tu dois adapter le calcul en fonction du scale de ton plane si celui-ci n'est plus uniforme et n'est plus égale à 1.
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

Répondre

Revenir vers « (C#) CSharp »