『功能项目』战士职业平A怪物掉血【44】

打印 上一主题 下一主题

主题 974|帖子 974|积分 2924

我们打开上一篇43事件中心的项目,

本章要做的事情是给主角增加一个xxxCtrl.cs脚本,再创建一个xxxOpt.cs调用xxxCtrl.cs机制层利用事件中心再写一个主角战士平A对怪物的伤害
首先创建脚本:PlayerCtrl.cs

  1. using UnityEngine;
  2. public class PlayerCtrl : MonoBehaviour{
  3.     BossCtrl bossCtrl;
  4.     public void Start() {
  5.         bossCtrl = FindObjectOfType<BossCtrl>();
  6.     }
  7.     public void SetPlayerHpValueChange(float attackValue){
  8.         bossCtrl.currentHp -= (int)((attackValue -
  9.             bossCtrl.defineValue) * (1 + Random.Range(-0.3f,0.3f)));
  10.     }
  11. }
复制代码
将xxxCtrl.cs脚本增加到主角资源框架上

再创建脚本:PlayerOpt.cs

  1. using UnityEngine;
  2. public class PlayerOpt : MonoBehaviour{
  3.     GameManager gm;
  4.     PlayerRayClickNavigation player;
  5.     #region 事件中心
  6.     BossCtrl bossCtrl;
  7.     PlayerCtrl playerCtrl;
  8.     Vector3 monsterPos;
  9.     Vector3 selfPos;
  10.     #endregion
  11.     public void Start(){
  12.         gm = GameManager.Instance;
  13.         player = gameObject.GetComponent<PlayerRayClickNavigation>();
  14.         #region 事件中心
  15.         bossCtrl = FindObjectOfType<BossCtrl>();
  16.         playerCtrl = gameObject.AddComponent<PlayerCtrl>();
  17.         EventCenter.Instance.AddEventListener<Vector3>("MonsterPositionChanged", OnMonsterPositionChanged);
  18.         monsterPos = GameObject.FindWithTag("Monster").gameObject.transform.position;
  19.         #endregion
  20.     }
  21.     void Update(){
  22.         #region 事件中心
  23.         selfPos = transform.position;
  24.         Player01A(selfPos, monsterPos);
  25.         #endregion
  26.     }
  27.     #region 事件中心
  28.     void Player01A(Vector3 selfPos, Vector3 monsterPos){
  29.         this.selfPos = selfPos;
  30.         this.monsterPos = monsterPos;
  31.         if (Vector3.Distance(selfPos, monsterPos) < 10){
  32.             if (player.changeProfess == 2){
  33.                 if (Input.GetKeyDown(KeyCode.A)){
  34.                     playerCtrl.SetPlayerHpValueChange(gm.infoSys.attackValue);
  35.                 }
  36.             }
  37.         }
  38.     }
  39.     void OnDestroy(){
  40.         EventCenter.Instance.RemoveEventListener<Vector3>("MonsterPositionChanged", OnMonsterPositionChanged);
  41.     }
  42.     void OnMonsterPositionChanged(Vector3 newPosition){
  43.         monsterPos = newPosition;
  44.         Player01A(transform.position, monsterPos);
  45.     }
  46.     #endregion
  47. }
复制代码
再将该脚本增加到资源框架上

生存后运行项目

本章利用事件中心实现了主角战士平A(按A键)对怪物血量造成伤害的效果
接下来的文章内容:
1.战士职业的伤害型技能
2.窗口可拖拽脚本
3.点击名称寻找地点功能
4.隐蔽怪物的天生
5.怪物I攻击范围内的主动攻击
6.掉落坐骑蛋的获取
7.异步传送转换场景
以及开放回合制、坐骑体系、宠物体系、背包体系、神炼体系、商城体系、Boss的目标跟随任务导航体系以及UI播放3D动画效果等等。
详细项目运行效果请关注water1024的b站视频项目演示《破碎纪元》

【Unity回合2.5D】破碎纪元_单机游戏热门视频 (bilibili.com)
https://www.bilibili.com/video/BV1rZY4e9Ebs/?spm_id_from=333.999.0.0&vd_source=547091a95b03acfa8e8a9e46ef499cd6

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

拉不拉稀肚拉稀

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表