【unity小技巧】受伤屏幕闪红、死亡动画、死亡黑屏效果

简介: 【unity小技巧】受伤屏幕闪红、死亡动画、死亡黑屏效果

玩家受伤

玩家受伤,屏幕显示血框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();
目录
相关文章
|
3月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
172 6
|
2月前
|
前端开发 图形学 开发者
【独家揭秘】那些让你的游戏瞬间鲜活起来的Unity UI动画技巧:从零开始打造动态按钮,提升玩家交互体验的绝招大公开!
【9月更文挑战第1天】在游戏开发领域,Unity 是最受欢迎的游戏引擎之一,其强大的跨平台发布能力和丰富的功能集让开发者能够迅速打造出高质量的游戏。优秀的 UI 设计对于游戏至关重要,尤其是在手游市场,出色的 UI 能给玩家留下深刻的第一印象。Unity 的 UGUI 系统提供了一整套解决方案,包括 Canvas、Image 和 Button 等组件,支持添加各种动画效果。
132 3
|
3月前
|
开发者 图形学 C#
深度解密:Unity游戏开发中的动画艺术——Mecanim状态机如何让游戏角色栩栩如生:从基础设置到高级状态切换的全面指南,助你打造流畅自然的游戏动画体验
【8月更文挑战第31天】Unity动画系统是游戏开发的关键部分,尤其适用于复杂角色动画。本文通过具体案例讲解Mecanim动画状态机的使用方法及原理。我们创建一个游戏角色并设计行走、奔跑和攻击动画,详细介绍动画状态机设置及脚本控制。首先导入动画资源并添加Animator组件,然后创建Animator Controller并设置状态间的转换条件。通过编写C#脚本(如PlayerMovement)控制动画状态切换,实现基于玩家输入的动画过渡。此方法不仅适用于游戏角色,还可用于任何需动态动画响应的对象,增强游戏的真实感与互动性。
94 0
|
3月前
|
开发者 图形学 前端开发
绝招放送:彻底解锁Unity UI系统奥秘,五大步骤教你如何缔造令人惊叹的沉浸式游戏体验,从Canvas到动画,一步一个脚印走向大师级UI设计
【8月更文挑战第31天】随着游戏开发技术的进步,UI成为提升游戏体验的关键。本文探讨如何利用Unity的UI系统创建美观且功能丰富的界面,包括Canvas、UI元素及Event System的使用,并通过具体示例代码展示按钮点击事件及淡入淡出动画的实现过程,助力开发者打造沉浸式的游戏体验。
95 0
|
3月前
|
图形学
Unity动画☀️Unity动画系统Bug集合
Unity动画☀️Unity动画系统Bug集合
|
5月前
|
图形学 开发者
【Unity小技巧】unity移动物体的探究——使用8个不同方法
【Unity小技巧】unity移动物体的探究——使用8个不同方法
171 1
|
5月前
|
图形学
【unity小技巧】实现投掷物品,比如长矛,刀具,手榴弹和其他物体
【unity小技巧】实现投掷物品,比如长矛,刀具,手榴弹和其他物体
60 1
|
5月前
|
图形学
【unity小技巧】实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)
【unity小技巧】实现FPS武器的瞄准放大效果(UGUI实现反向遮罩,全屏遮挡,局部镂空效果)
80 1
|
5月前
|
图形学
【unity小技巧】Unity中实现一个战斗连击连招系统,可以动态添加减少连击连招段数功能
【unity小技巧】Unity中实现一个战斗连击连招系统,可以动态添加减少连击连招段数功能
117 0
|
5月前
|
存储 图形学
【unity小技巧】unity事件系统创建通用的对象交互的功能
【unity小技巧】unity事件系统创建通用的对象交互的功能
54 0