「Unity俯视角射击」我们做一个元气骑士完整Demo(四)( 二 )


最后 , 除了被攻击的动画和镜头抖动这两个效果 , 还需要一个UI上面的数值显示 , 为此我制作了一个用于显示被攻击的UI预制体 。
①新建一个Text , 调整成合适的大小和颜色 , 并新建一个脚本用于控制该UI 。
②编写脚本 , 该预制体的脚本逻辑非常简单 , 用DoTween做了一段动画 , 结束时删除自己即可 。
public class BeAttackText : MonoBehaviour{void Start(){transform.localScale = new Vector3(0, 0, 1);transform.DOScale(new Vector3(1, 1, 0), 0.4f);transform.DOMoveY(transform.position.y + 20, 0.5f);Destroy(gameObject,0.6f);}}③在GameManager中控制在对应的位置生成该预制体 。
public void ShowAttack(float data, Vector3 pos){GameObject textgo = Instantiate(beAttackText, pos, Quaternion.identity);textgo.transform.SetParent(GameObject.Find("Canvas").transform);textgo.GetComponent().text = "-" + data;}在BeAttack方法中调用这个ShowAttack方法 , 传入屏幕映射值作为生成该预制体的位置 。
三、怪物的被攻击虽然游戏中有四种怪 , 但是被攻击时目前来讲没有什么差别 , 主要操作都是在父类里面写的 。
public virtual void BeAttack(float data){hp -= data;if (hp <= 0){monsterState = MonsterState.Die;GetComponent().SetBool("die", true);GetComponent().enabled = false;room.MonsterDie(this);for (int i = 0; i < coin; i++){Instantiate(GameManager.instance.coinPre, transform.position, Quaternion.identity);}for (int i = 0; i < magic; i++){Instantiate(GameManager.instance.mpPre, transform.position, Quaternion.identity);}}else{GetComponent().Play("BeAttack");GameManager.instance.ShowAttack(data, Camera.main.WorldToScreenPoint(transform.position + new Vector3(0, 1, 0)));}}基本结构和玩家被攻击方法也差不多 , 只是没有防御值判断 。
其中不同的地方一个是怪物死亡之后需要通知自己所在的房间自己已经被打败了 , 在房间持有怪物List中删除自己 。
另一个就是需要生成金币和魔法石 , 而这些金币和魔法石在玩家靠近时会自动飞向玩家 。
「Unity俯视角射击」我们做一个元气骑士完整Demo(四)文章插图
private void Update(){if (!isDrop){if (Vector3.Distance(transform.position, target) > 0.01)transform.position = Vector3.Lerp(transform.position, target, Time.deltaTime * speed);elseisDrop = true;}else{if (Vector3.Distance(transform.position, player.position) <= getDistance)transform.position = Vector3.Lerp(transform.position, player.position, Time.deltaTime * speed);if (Vector3.Distance(transform.position, player.position) <= 0.5){player.GetComponent().AddCoin();Destroy(gameObject);}}}
「Unity俯视角射击」我们做一个元气骑士完整Demo(四)文章插图
除此之外还可以制作一些木箱子花瓶之类的可以被打碎的道具 , 或者是打碎之后有物体溢出的箱子等等 。
你可以设想一下如果不使用接口应该如何实现这些逻辑判断 , 或许你会想到更好的办法? 。
游戏Demo源码+素材网盘链接:
提取码:8bwo
——分割线——
欢迎加入游戏开发群欢乐搅基:1082025059
【「Unity俯视角射击」我们做一个元气骑士完整Demo(四)】对游戏开发感兴趣的童鞋可戳这里进一步了解:


推荐阅读