Unity实现物体闪烁功能
【摘要】 一、第一步先在场景中创建两个物体cube,设置好位置,以便摄像机能看见,还需要设置新的材质球,然后新建材质球,新建完成之后给cube赋值上新建的材质球放到如下图二、新建脚本ObjectBlink.cs代码如下:using UnityEngine;public class ObjectBlink : MonoBehaviour{ public float blinkInterval = ...
一、第一步先在场景中创建两个物体cube,设置好位置,以便摄像机能看见,还需要设置新的材质球,然后新建材质球,新建完成之后给cube赋值上
新建的材质球放到如下图
二、新建脚本ObjectBlink.cs
代码如下:
using UnityEngine;
public class ObjectBlink : MonoBehaviour
{
public float blinkInterval = 1f; // 闪烁间隔时间(秒)
public float blinkDuration = 0.5f; // 每次闪烁持续的时间(秒)
public bool isBlinking = false;
private float timer = 0f;
void Update()
{
if (isBlinking)
{
timer += Time.deltaTime;
if (timer < blinkDuration)
{
// 在闪烁持续时间内,设置物体的透明度(通过修改材质的颜色属性来间接实现)
Color currentColor = GetComponent<Renderer>().material.color;
currentColor.a = Mathf.PingPong(timer, 1f);
GetComponent<Renderer>().material.color = currentColor;
}
else
{
// 闪烁持续时间结束,恢复物体的默认透明度
Color defaultColor = GetComponent<Renderer>().material.color;
defaultColor.a = 1f;
GetComponent<Renderer>().material.color = defaultColor;
timer = 0f;
isBlinking = false;
}
}
else
{
// 按照闪烁间隔时间来触发下一次闪烁
timer += Time.deltaTime;
if (timer >= blinkInterval)
{
isBlinking = true;
timer = 0f;
}
}
}
}
这段代码实现了物体按照设定的间隔时间和闪烁持续时间进行闪烁的效果。通过修改物体材质的透明度(利用 PingPong
函数在 0 到 1 之间循环变化来实现闪烁的视觉效果),来让物体呈现出一闪一闪的样子。
三、脚本挂载到刚刚创建的cube上面,运行即可,如果看不见效果,需要设置一下材质球的RenderingMoede为Fade或者是Transparent,
如下图所示:
就能看见如下效果(交替闪烁),自行想象一下即可
最后补充,如果不是你想要的效果,也可以使用高亮插件来实现,也可以写shader来实现,具体需要具体需求
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)