Jump to content
Unity Insider Forum
Sign in to follow this  
Kojote

Shader mit Alpha

Recommended Posts

Grüße!

Ich möchte bei meinem Charakter gern die Transparenz ändern, um so ein langsames entfernen vom Spielfeld zu ermögliche.

Den Code hab ich schon:

this.gameObject.GetComponentInChildren<SkinnedMeshRenderer>().material.color.a = 0;

Ich brauche aber noch einen Shader der diesen Befehl auch annimmt. Hab nun schon mehrere Tutorials gelesen und man sagt nur, du brauchst einen Shader der das auch zulässt. Habt ihr eine Ahnung welchen Shader ich für den Charakter verwenden könnte?

Grüße Kojote

Share this post


Link to post
Share on other sites

Einfach beim Material des Spielers oben bei "Rendering Mode" auf "Fade" stellen. Wenn du jetzt den Alphawert senkst verschwindet er. Geht allerdings nur, wenn du den Unity Standardshader verwendest, dieser hat verschiedene Modi.

Share this post


Link to post
Share on other sites

Klasse, ich danke dir!

EDIT:

Also so richtig wills nicht. Ich hab mir den Alpha genommen und nun das ausgeführt:

	materialAlpha = this.gameObject.GetComponentInChildren<SkinnedMeshRenderer>().material.color.a;
	while (materialAlpha >= 0.1f) {
            materialAlpha -= 0.01f;
            yield return new WaitForFixedUpdate();
            Debug.Log(materialAlpha);
        }

Die Hilfe in VS sagt mir a wäre richtigerweise der Alpha. Nur komisch ist, in Unity ist er 255 groß, in VS mit Debug nur 1. Gut, Script angepasst, aber er zählt nach unten, aber die Transparenz ändert sich nicht. :huh:

EDIT:

So, habs nun hin bekommen, warum ichs aber dermaßen kompliziert schreiben muss, damit was passiert versteh ich auch nicht:

	material = this.gameObject.GetComponentInChildren<SkinnedMeshRenderer>().material;
        material.SetFloat("_Mode", 4f);
        col = material.GetColor("_Color");
    	col.a = 105; // 0-255
        material.SetColor("_Color", col);

 

Edited by Kojote
Edit

Share this post


Link to post
Share on other sites

Naja, das Problem ist SetColor arbeitet mit RGB-Wert 0-255 und der Shader arbeitet mit 0-1.
Mit SetFloat "_Mode" setzt du den Modus des Shaders vermutlich auf "Fade".

"_Mode" und "_Color" sind dabei immer Properties des Shaders, die man aber von Außen leider nicht sieht, daher ist es immer ein wenig "Tricky".

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×