如何使游戏对象在统一中透明
本文关键字:透明 何使 游戏 对象 | 更新日期: 2023-09-27 18:36:16
在我的游戏中,如果玩家在游戏过程中与特定对象发生碰撞,我想通过在运行时编写脚本使玩家对象透明 2 秒......可能吗?
检查是否有冲突。触发所需的碰撞时,您可以更改透明度。
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中,对我有用的最佳方法(使对象不可见)是:
- 在
- 渲染模式下,将要不可见的所有游戏对象材质设置为透明。
- 然后,单击反照率旁边的小圆形按钮并向下滚动给定的项目列表,直到找到一个名为
UIMask
. - 突出显示它并按回车键。
*请注意,这是一个硬修复,我不确定您是否可以使用代码更改它。
** 这是为掷球中的边界而设计的,其中包含玩家跳跃功能。我需要使墙壁不可见,但也能够碰撞以阻止空中玩家物体。
这可以通过着色器简单地完成,您可以在运行时快速有效地更改着色器:
- 创建新材质并将着色器设置为使用
Unlit/Transparent Cutout
- 分配游戏对象以使用此新材质 关闭
- 游戏对象的网格渲染中的所有内容:将投射阴影设置为关闭,接收阴影禁用,将全局照明贡献为禁用,关闭光照探针和反射,将运动矢量设置为"强制不运动",关闭动态遮挡。
- 另外不要忘记移除游戏对象的网格碰撞体。