Page 2 sur 2

Re: Création d'une zone en surbrillance

Publié : 24 Août 2019 17:06
par Max
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();
    }
     
}

Re: Création d'une zone en surbrillance

Publié : 24 Août 2019 23:44
par Nathrel
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.

Re: Création d'une zone en surbrillance

Publié : 25 Août 2019 10:08
par Max
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

Re: Création d'une zone en surbrillance

Publié : 26 Août 2019 14:03
par Nathrel
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

Re: Création d'une zone en surbrillance

Publié : 26 Août 2019 17:16
par Max
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

Re: Création d'une zone en surbrillance

Publié : 06 Sep 2019 20:10
par Nathrel
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

Re: Création d'une zone en surbrillance

Publié : 06 Sep 2019 20:31
par Max
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.