rendre transparent un objet

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
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

rendre transparent un objet

Message par Kaloverian » 22 Déc 2021 21:39

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?

Avatar de l’utilisateur
jmhoubre
Messages : 851
Inscription : 05 Oct 2019 22:05

Re: rendre transparent un objet

Message par jmhoubre » 22 Déc 2021 23:57

Par défaut, un matériau avec le shader standard est opaque. Il faut déjà le passer sur transparent.

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: rendre transparent un objet

Message par Kaloverian » 23 Déc 2021 01:52

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);
      
   }

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

Re: rendre transparent un objet

Message par Max » 23 Déc 2021 11:10

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 ?
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

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: rendre transparent un objet

Message par Kaloverian » 23 Déc 2021 16:40

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.

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

Re: rendre transparent un objet

Message par Max » 23 Déc 2021 17:29

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.
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 »