在我的游戏中,如果玩家在游戏中与特定对象发生碰撞,我希望通过在运行时编写脚本让玩家对象透明2秒......是否可能?
答案 0 :(得分: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;
您可以这样做以使您的计划等待时间:http://docs.unity3d.com/Documentation/Manual/Coroutines.html
你会注意到这个例子正好是你的问题。
答案 1 :(得分:4)
试试这个扩展方法:
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);
}
然后您可以通过以下方式调用它:
gameObject.renderer.material.ChangeAlpha( Your Alpha Value );
答案 2 :(得分:1)
你调用它的对象必须有一个支持透明度的着色器。在Unity5中,使用标准着色器时,必须将其明确设置为" Transparent"能够操纵alpha值。在此处输入图像描述
你也应该清楚,alpha值是一个从0.0f到1.0f的浮点数,所以例如设置
var other : GameObject;
other.renderer.material.color.a = 0.5; // 50 % transparent
other.renderer.material.color.a = 1.0; // 100% visible
将使对象50%透明。
答案 3 :(得分:0)
*请注意,这是一个难以解决的问题,我不确定您是否可以使用代码更改此内容。
**这是针对包含球员跳跃功能的滚球边界而制作的。需要使墙壁看不见但也可以碰撞阻止空中出生的玩家对象
答案 4 :(得分:0)
只需使用着色器,您就可以在运行时快速高效地进行更改
Unlit/Transparent Cutout