如何使游戏对象在统一中透明化

Aka*_*ari 6 unity-game-engine unityscript

在我的游戏中,如果玩家在游戏中与特定对象发生碰撞,我希望通过在运行时编写脚本来使玩家对象透明2秒......是否可能?

小智 10

检查是否有碰撞.当您想要的碰撞被触发时,您可以更改透明度.

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;
Run Code Online (Sandbox Code Playgroud)

您可以这样做以使您的程序等待时间:http://docs.unity3d.com/Documentation/Manual/Coroutines.html

你会注意到这个例子正好是你的问题.

  • Unity不允许您修改Color.a的值.你必须使用临时变量. (2认同)

Mic*_*r3D 5

试试这个扩展方法:

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);               
}
Run Code Online (Sandbox Code Playgroud)

然后您可以通过以下方式调用它:

gameObject.renderer.material.ChangeAlpha( Your Alpha Value );
Run Code Online (Sandbox Code Playgroud)