您的位置:首页 > 财经 > 金融 > 视频模板在线制作网站_品牌线上推广渠道有哪些_网站免费推广软件_谷歌搜索引擎在线

视频模板在线制作网站_品牌线上推广渠道有哪些_网站免费推广软件_谷歌搜索引擎在线

2024/12/22 9:56:51 来源:https://blog.csdn.net/suzh1qian/article/details/144224207  浏览:    关键词:视频模板在线制作网站_品牌线上推广渠道有哪些_网站免费推广软件_谷歌搜索引擎在线
视频模板在线制作网站_品牌线上推广渠道有哪些_网站免费推广软件_谷歌搜索引擎在线

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili

教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/

本章节创建了三种粒子特效火焰寒冰雷电

主场景创建/特效/粒子

初始的例子特效

火焰

寒冰

雷电

EntityFX.cs

更改的部分!!!

进入三个状态添加特效

ShockFxForIgniteFxForChillFxFor,它们用于分别触发不同的视觉效果(电击、点燃、冰冻效果)。每个方法都会触发对应的效果并改变物体的颜色,持续一定时间后停止颜色变化。

总结分析

  1. 共同点

    • 所有三个方法都播放一个对应的视觉特效(电击、点燃或冰冻),通过调用 Play() 播放特效。
    • 通过 InvokeRepeating 方法周期性地触发对应的颜色变化函数(ShockColorFxIgniteColorFxChillColorFx),使物体的颜色呈现闪烁或渐变效果。
    • 通过 Invoke 方法在一定时间(_seconds)后停止颜色变化,调用 CancelColorChange 方法。
  2. 目的

    • 这些方法的目的在于通过视觉效果来模拟不同的状态,如电击、燃烧、冰冻等。通过定时触发颜色变化,表现出物体在不同状态下的效果。
    • InvokeRepeating 的使用使得颜色变化在指定时间内不断变化,而 Invoke 则用来在效果持续一段时间后停止。
    public void ShockFxFor(float _seconds){shockFx.Play();InvokeRepeating("ShockColorFx", 0, .3f);Invoke("CancelColorChange", _seconds);}public void IgniteFxFor(float _seconds){igniteFx.Play();InvokeRepeating("IgniteColorFx", 0, .3f);Invoke("CancelColorChange", _seconds);}public void ChillFxFor(float _seconds){chillFx.Play();InvokeRepeating("ChillColorFx", 0, .3f);Invoke("CancelColorChange", _seconds);}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class EntityFX : MonoBehaviour
{private SpriteRenderer sr;[Header("Flash FX")][SerializeField] private float flashDuration;[SerializeField] private Material hitMat;private Material originalMat;[Header("Ailment colors")]//异常状态颜色[SerializeField] private Color[] chillColor;[SerializeField] private Color[] igniteColor;[SerializeField] private Color[] shockColor;[Header("Ailment particles")][SerializeField] private ParticleSystem igniteFx;[SerializeField] private ParticleSystem chillFx;[SerializeField] private ParticleSystem shockFx;private void Start(){sr = GetComponentInChildren <SpriteRenderer>();//这行代码使用 GetComponentInChildren 方法查找并获取当前游戏对象或其子对象中的 SpriteRenderer 组件,并将其赋值给 sr 变量。originalMat = sr.material;}public void MakeTransprent(bool _transparent)//攻击命中时候的透明特效{if (_transparent)sr.color = Color.clear;elsesr.color = Color.white;}private IEnumerator FlashFX()//定义了一个私有的协程 FlashFX,用于在一段时间内改变 SpriteRenderer 的材质,然后恢复原始材质。{sr.material = hitMat;Color currentColor = sr.color;//保存最开始的颜色,闪光之后变回去sr.color = Color.white;yield return new WaitForSeconds(flashDuration);sr.color = currentColor;sr.material = originalMat;}//P59,骷髅战士的血条闪烁private void RedColorBlink(){if(sr.color !=Color.white)sr.color = Color.white;else{sr.color = Color.red;}}private void CancelColorChange(){CancelInvoke();//调用 CancelInvoke 方法取消所有与当前游戏对象关联的 Invoke 调用。sr.color = Color.white;igniteFx.Stop();chillFx.Stop();shockFx.Stop();}//10月30日//三个状态的携程public void ShockFxFor(float _seconds){shockFx.Play();InvokeRepeating("ShockColorFx", 0, .3f);Invoke("CancelColorChange", _seconds);}public void IgniteFxFor(float _seconds){igniteFx.Play();InvokeRepeating("IgniteColorFx", 0, .3f);Invoke("CancelColorChange", _seconds);}public void ChillFxFor(float _seconds){chillFx.Play();InvokeRepeating("ChillColorFx", 0, .3f);Invoke("CancelColorChange", _seconds);}private void ShockColorFx(){if (sr.color != shockColor[0])sr.color = shockColor[0];else{sr.color = shockColor[1];}}private void IgniteColorFx()//燃烧状态颜色{if (sr.color != igniteColor[0])sr.color = igniteColor[0];else{sr.color = igniteColor[1];}}private void ChillColorFx()//燃烧状态颜色{if (sr.color != chillColor[0])sr.color = chillColor[0];else{sr.color = chillColor[1];}}}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com