项目实训2022

编程入门 行业动态 更新时间:2024-10-09 18:24:54

项目<a href=https://www.elefans.com/category/jswz/34/1769369.html style=实训2022"/>

项目实训2022

僵尸攻击完善

上次只是简单实现了攻击植物,这次将会完善僵尸攻击时的植物闪烁效果以及僵尸攻击逻辑优化和完善。

闪烁效果


//被攻击时调用变色函数public void Hurt(float hurtValue){hp -= hurtValue;StartCoroutine(ColorEF(0.2f,new Color(0.5f,0.5f,0.5f),0.05f,null));if(hp <=0){//死亡Dead();}}//实现变色效果protected IEnumerator ColorEF(float wantTime, Color targetColor, float delayTime, UnityAction fun){float currTime = 0;float lerp;while (currTime < wantTime){yield return new WaitForSeconds(delayTime);lerp = currTime / wantTime;currTime += delayTime;spriteRenderer.color = Color.Lerp(Color.white, targetColor, lerp);}spriteRenderer.color = Color.white;if (fun != null) fun();}

调整代码逻辑,使得僵尸可以在各种状态快速切换

//枚举僵尸状态
public enum ZombieState
{Idel,Walk,Attack,Dead}public ZombieState State{get => state;set{state = value;switch (state){case ZombieState.Idel://播放行走动画,但是卡在第一帧animator.Play(walkAnimationStr, 0, 0);animator.speed = 0;break;case ZombieState.Walk:animator.Play(walkAnimationStr);animator.speed = 1;break;case ZombieState.Attack:animator.Play("Zombie_Attack");animator.speed = 1;break;case ZombieState.Dead:break;}}void Update(){FSM();}//状态检测private void FSM(){switch (State){case ZombieState.Idel:State = ZombieState.Walk;break;case ZombieState.Walk:// 一直左走,并且遇到植物会攻击,攻击结束继续走Move();break;case ZombieState.Attack:if (isAttackState) break;Attack(currGrid.CurrPlantBase);break;}}//植物死亡时,把当前植物状态设为null,防止空引用异常private void Dead(){curgird.CurrPlantBase = null;Destroy(gameObject);}

更多推荐

项目实训2022

本文发布于:2024-02-14 13:26:13,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1763849.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:实训   项目

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!