Unity中实现2D残影效果
发布日期:2021-06-30 19:57:13 浏览次数:4 分类:技术文章

本文共 2152 字,大约阅读时间需要 7 分钟。

一:效果演示


二:完整代码

using UnityEngine;using System.Collections.Generic;public class GhostEffect : MonoBehaviour{    [Header("是否开启残影效果")]    public bool openGhoseEffect;    [Header("是否开启褪色消失")]    public bool openFade;    [Header("显示残影的持续时间")]    public float durationTime;    [Header("生成残影与残影之间的时间间隔")]    public float spawnTimeval;    private float spawnTimer;//生成残影的时间计时器    [Header("残影颜色")]    public Color ghostColor;    [Header("残影层级")]    public int ghostSortingOrder;    private SpriteRenderer sr;//SpriteRenderer    private List
ghostList = new List
();//残影列表 private void Awake() { sr = GetComponent
(); } private void Update() { if (openGhoseEffect == false) { return; } DrawGhost(); Fade(); } ///
/// 绘制残影 /// private void DrawGhost() { if (spawnTimer >= spawnTimeval) { spawnTimer = 0; GameObject _ghost = new GameObject(); ghostList.Add(_ghost); _ghost.name = "ghost"; _ghost.AddComponent
(); _ghost.transform.position = transform.position; _ghost.transform.localScale = transform.localScale; SpriteRenderer _sr = _ghost.GetComponent
(); _sr.sprite = sr.sprite; _sr.sortingOrder = ghostSortingOrder; _sr.color = ghostColor; if (openFade == false) { Destroy(_ghost, durationTime); } } else { spawnTimer += Time.deltaTime; } } ///
/// 褪色操作 /// private void Fade() { if (openFade == false) { return; } for (int i = 0; i < ghostList.Count; i++) { SpriteRenderer ghostSR = ghostList[i].GetComponent
(); if (ghostSR.color.a <= 0) { GameObject tempGhost = ghostList[i]; ghostList.Remove(tempGhost); Destroy(tempGhost); } else { float fadePerSecond = (ghostColor.a / durationTime); Color tempColor = ghostSR.color; tempColor.a -= fadePerSecond * Time.deltaTime; ghostSR.color = tempColor; } } }}

转载地址:https://liuhaowen.blog.csdn.net/article/details/104226143 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Unity中实现新手引导的镂空效果
下一篇:设计模式——工厂模式

发表评论

最新留言

做的很好,不错不错
[***.243.131.199]2024年04月24日 12时10分49秒