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


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(四)】对游戏开发感兴趣的童鞋可戳这里进一步了解: