玩家受伤
玩家受伤,屏幕显示血框UI,然后逐渐消失
//玩家受击时调用 void GetHit(){ StartCoroutine(BloodyScreenEffect()); } private IEnumerator BloodyScreenEffect() { // 检查bloodyScreen是否处于非激活状态,如果是则将其激活 if (!bloodyScreen.activeInHierarchy) { bloodyScreen.SetActive(true); } // 获取bloodyScreen下的Image组件 var image = bloodyScreen.GetComponentInChildren<Image>(); // 设置初始alpha值为1(完全可见) Color startColor = image.color; startColor.a = 1f; image.color = startColor; float duration = 3f; float elapsedTime = 0f; while (elapsedTime < duration) { // 使用Lerp计算新的alpha值 float alpha = Mathf.Lerp(1f, 0f, elapsedTime / duration); // 更新颜色的alpha值 Color newColor = image.color; newColor.a = alpha; image.color = newColor; // 增加经过的时间 elapsedTime += Time.deltaTime; yield return null; // 等待下一帧 } // 检查bloodyScreen是否处于激活状态,如果是则将其关闭 if (bloodyScreen.activeInHierarchy) { bloodyScreen.SetActive(false); } }
配置人物死亡动画
配置玩家死亡,倒地动画,其实是相机倒地
相机默认禁用死亡动画
玩家死亡调用,开启动画
GetComponentInChildren<Animator>().enabled true;
死亡黑屏效果
屏幕放置一个全屏的黑图,默认透明度设置为0
脚本控制
using UnityEngine; using UnityEngine.UI; using System.Collections; public class ScreenFader : MonoBehaviour { public Image fadeImage; // 用于淡入淡出的Image组件 public float fadeDuration = 7.0f; // 淡入淡出持续时间,单位秒 public void StartFade() { StartCoroutine(FadeOut()); // 开始淡出 } private IEnumerator FadeOut() { float timer = 0f; // 计时器,用于记录淡入淡出的时间 Color startColor = fadeImage.color; // 获取初始颜色 Color endColor = new Color(0f, 0f, 0f, 1f); // 结束颜色为黑色(RGB值为0),alpha值为1(完全不透明) while (timer < fadeDuration) { // 使用Lerp计算当前颜色,并更新fadeImage的颜色 fadeImage.color = Color.Lerp(startColor, endColor, timer / fadeDuration); timer += Time.deltaTime; // 增加计时器 yield return null; // 等待下一帧 } // 确保在淡出结束时fadeImage完全变成黑色 fadeImage.color = endColor; } }
死亡调用
GetComponent<ScreenFader>().StartFade();