【发布时间】:2013-10-21 07:49:25
【问题描述】:
在我的游戏中,如果玩家在游戏过程中与特定对象发生碰撞,我想通过在运行时编写脚本使玩家对象透明 2 秒...有可能吗?
【问题讨论】:
标签: unity3d unityscript
在我的游戏中,如果玩家在游戏过程中与特定对象发生碰撞,我想通过在运行时编写脚本使玩家对象透明 2 秒...有可能吗?
【问题讨论】:
标签: unity3d unityscript
检查碰撞。当您想要的碰撞被触发时,您可以更改透明度。
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
你会注意到这个例子正是你的问题。
【讨论】:
试试这个扩展方法:
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 );
【讨论】:
在 Unity 5 中,最适合我的方法(使对象不可见)是在渲染模式下将我想要的所有游戏对象的材质设置为不可见透明。然后单击 albedo 旁边的小圆形按钮,然后向下滚动给定的项目列表,直到找到一个名为 UIMask 的项目。突出显示它并按 Enter。我是初学者,所以请问您是否需要更多说明。
*请注意,这是一个硬修复,我不确定您是否可以使用代码更改它。
**这是为滚动球的边界而设计的,包括球员跳跃功能。需要使墙壁不可见,但也需要能够碰撞以阻止空中生成的玩家对象
【讨论】:
只需使用着色器即可完成,您可以在运行时快速有效地更改它
Unlit/Transparent Cutout
【讨论】: