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

本文关键字:透明 何使 游戏 对象 | 更新日期: 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中,对我有用的最佳方法(使对象不可见)是:

  1. 渲染模式下,将要不可见的所有游戏对象材质设置为透明。
  2. 然后,单击反照率旁边的小圆形按钮并向下滚动给定的项目列表,直到找到一个名为 UIMask .
  3. 突出显示它并按回车键

*请注意,这是一个硬修复,我不确定您是否可以使用代码更改它。

** 这是为掷球中的边界而设计的,其中包含玩家跳跃功能。我需要使墙壁不可见,但也能够碰撞以阻止空中玩家物体。

这可以通过着色器简单地完成,您可以在运行时快速有效地更改着色器:

  • 创建新材质并将着色器设置为使用
    Unlit/Transparent Cutout
    
  • 分配游戏对象以使用此新材质
  • 关闭
  • 游戏对象的网格渲染中的所有内容:将投射阴影设置为关闭,接收阴影禁用,将全局照明贡献为禁用,关闭光照探针和反射,将运动矢量设置为"强制不运动",关闭动态遮挡。
  • 另外不要忘记移除游戏对象的网格碰撞体。