web-dev-qa-db-fra.com

Comment rendre un objet de jeu transparent dans l'unité

Dans mon jeu, je veux rendre l'objet joueur transparent pendant 2 secondes en créant un script lors de l'exécution si le joueur est entré en collision avec un objet spécifique pendant le jeu ... est-ce possible?

6
Akari

Vérifiez la collision. Lorsque la collision souhaitée est déclenchée, vous pouvez modifier la transparence. 

GameObject g;

// 50% Transparency.
g.renderer.material.color.a = 0.5f; // a is the alpha value.

 // 100% Transparency.
g.renderer.material.color.a = 1.0f;

Vous pouvez faire ceci pour rendre votre temps d’attente de programme: http://docs.unity3d.com/Documentation/Manual/Coroutines.html

Vous remarquerez que l'exemple est exactement votre question.

10
user2085599

Essayez cette méthode d'extension:

public static void ChangeAlpha(this Material mat, float alphaValue)
{
    Color oldColor = mat.color;
    Color newColor = new Color(oldColor.r, oldColor.g, oldColor.b, alphaValue);         
    mat.SetColor("_Color", newColor);               
}

Vous pouvez ensuite l'appeler par:

gameObject.renderer.material.ChangeAlpha( Your Alpha Value );
4
MichaelTaylor3D

l'objet sur lequel vous appelez ceci doit avoir un shader qui supporte la transparence. Dans Unity5, lorsque vous utilisez le shader standard, vous devez explicitement le définir sur "Transparent" pour pouvoir manipuler la valeur alpha. entrez la description de l'image ici

entrez la description du lien ici

Il devrait également être clair pour vous que la valeur alpha est un float qui va de 0.0f à 1.0f, donc par ex. réglage 

var other : GameObject;
other.renderer.material.color.a = 0.5; // 50 % transparent
other.renderer.material.color.a = 1.0; // 100% visible

rendra l'objet transparent à 50%.

1

dans Unity 5, le meilleur moyen pour moi (POUR RENDRE UN OBJET INVISIBLE) était de définir tous les matériaux de l'objet du jeu que je voulais être invisibles à transparents sous le mode de rendu. ALORS, cliquez sur le petit bouton rond situé à côté de albedo, puis sur la liste des éléments donnés jusqu'à ce que vous en trouviez un appelé UIMask. Sélectionnez-le et appuyez sur Entrée. Je suis débutant alors demandez si vous avez besoin de précisions. 

* Notez que ceci est un correctif et im pas sûr si vous pouvez changer cela avec du code. 

** ceci a été fait pour les limites en roll-a-ball avec une fonction de saut de joueur incluse. nécessaire pour rendre les murs invisibles mais également en cas de collision pour arrêter l'objet de joueur né dans l'air

0
Icarus_XXII