unity实现 屏幕边缘渐变的红色闪烁效果,距离屏幕边缘越远 红色越淡
时间: 2023-09-30 15:11:43 浏览: 312
1. 创建一个UI Image,设置为全屏,颜色为红色。
2. 在该Image上添加一个Mask组件,设置为RectMask2D类型。
3. 在该Image上添加一个脚本,实现红色渐变效果。具体实现如下:
```csharp
using UnityEngine;
using UnityEngine.UI;
public class ScreenEdgeFlash : MonoBehaviour
{
public float fadeDistance = 50f; // 渐变距离
private Image maskImage; // Mask组件
private Color originalColor; // 初始颜色
void Start()
{
maskImage = GetComponent<Image>();
originalColor = maskImage.color;
}
void Update()
{
// 获取屏幕边缘的位置
Vector3 screenPos = Camera.main.WorldToScreenPoint(transform.position);
float distToEdge = Mathf.Min(screenPos.x, screenPos.y, Screen.width - screenPos.x, Screen.height - screenPos.y);
// 计算渐变的颜色
float alpha = Mathf.InverseLerp(0f, fadeDistance, distToEdge);
Color color = new Color(originalColor.r, originalColor.g, originalColor.b, alpha * originalColor.a);
// 更新Mask颜色
maskImage.color = color;
}
}
```
4. 将该脚本挂载到UI Image上,并设置距离屏幕边缘的距离(即fadeDistance)。距离屏幕边缘越远,红色就越淡。
阅读全文