Page 1 sur 1

rendre transparent un objet

Publié : 22 Déc 2021 21:39
par Kaloverian
bonjour,

Ce petit script uarait pour but de rendre transparent un objet qui avait auparavant un matériau.

Code : Tout sélectionner

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

public class transp : MonoBehaviour
{   
   
    public Material mat;
     public Mesh mesh;
    public GameObject obj;
    
     Material mat1,mat2;
     
     float alphaValue;
     
    // Start is called before the first frame update
    void Start()
    { 
         
       obj.AddComponent<MeshRenderer>().material=ChangeAlpha(mat,0);
      
   }

 
     Material  ChangeAlpha(Material mat1, float alphaValue)
     {
       Color oldColor = mat.color;
       Color newColor = new Color(oldColor.r, oldColor.g, oldColor.b, alphaValue);                
       mat.SetColor("_Color", newColor);    
       return mat2;       
     }
}

Ce script, ne fonctionne pas.Pourquoi?

Re: rendre transparent un objet

Publié : 22 Déc 2021 23:57
par jmhoubre
Par défaut, un matériau avec le shader standard est opaque. Il faut déjà le passer sur transparent.

Re: rendre transparent un objet

Publié : 23 Déc 2021 01:52
par Kaloverian
même problème si je prends alphaValue = 1
partie du code modifiée

Code : Tout sélectionner

  void Start()
    { 
         
       obj.AddComponent<MeshRenderer>().material=ChangeAlpha(mat,1);
      
   }

Re: rendre transparent un objet

Publié : 23 Déc 2021 11:10
par Max
Bonjour,

as-tu tenu compte du message de jmhoubre ?

En suite, dans ta fonction ChangeAlpha(), tu as en entrée un paramètre mat1, dans la fonction tu traites mat et en retour tu renvoies mat2 :triste1:
ça ne peut pas fonctionner. Tout cela semble très brouillon.
Et dans tout tes codes, tu utilises des AddComponent. Tu génères des GameObject de manière procédurale ? Ou tu cherches à récupérer le component existant d'un GameObject ?

Re: rendre transparent un objet

Publié : 23 Déc 2021 16:40
par Kaloverian
je génére toujours un objet dynamiquement

J'ai utilisé mat1 en argument de la fonction pour y avoir une variable muette.
Cette fonction doit retournenr un materiau différent de celui mis en argument donc return mat2
Bien sûr quand la fonction est appelée,je llui passe en argument le bon matériau mat.

Re: rendre transparent un objet

Publié : 23 Déc 2021 17:29
par Max
Kaloverian a écrit :
23 Déc 2021 16:40
J'ai utilisé mat1 en argument de la fonction pour y avoir une variable muette.
Cette fonction doit retournenr un materiau différent de celui mis en argument donc return mat2
quelle est alors le but de cette fonction, qui renvoie mat2 sans modification quoiqu'il arrive
Autant écrire alors

Code : Tout sélectionner

obj.AddComponent<MeshRenderer>().material=mat2;
non ? ou alors quelque chose m'échappe.