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

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

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

首先创建脚本:PlayerCtrl.cs

cs 复制代码
using UnityEngine;
public class PlayerCtrl : MonoBehaviour{
    BossCtrl bossCtrl;
    public void Start() {
        bossCtrl = FindObjectOfType<BossCtrl>();
    }
    public void SetPlayerHpValueChange(float attackValue){
        bossCtrl.currentHp -= (int)((attackValue - 
            bossCtrl.defineValue) * (1 + Random.Range(-0.3f,0.3f)));
    }
}

将xxxCtrl.cs脚本增加到主角资源框架上

再创建脚本:PlayerOpt.cs

cs 复制代码
using UnityEngine;
public class PlayerOpt : MonoBehaviour{
    GameManager gm;
    PlayerRayClickNavigation player;
    #region 事件中心
    BossCtrl bossCtrl;
    PlayerCtrl playerCtrl;
    Vector3 monsterPos;
    Vector3 selfPos;
    #endregion
    public void Start(){
        gm = GameManager.Instance;
        player = gameObject.GetComponent<PlayerRayClickNavigation>();
        #region 事件中心
        bossCtrl = FindObjectOfType<BossCtrl>();
        playerCtrl = gameObject.AddComponent<PlayerCtrl>();
        EventCenter.Instance.AddEventListener<Vector3>("MonsterPositionChanged", OnMonsterPositionChanged);
        monsterPos = GameObject.FindWithTag("Monster").gameObject.transform.position;
        #endregion
    }
    void Update(){
        #region 事件中心
        selfPos = transform.position;
        Player01A(selfPos, monsterPos);
        #endregion
    }
    #region 事件中心
    void Player01A(Vector3 selfPos, Vector3 monsterPos){
        this.selfPos = selfPos;
        this.monsterPos = monsterPos;
        if (Vector3.Distance(selfPos, monsterPos) < 10){
            if (player.changeProfess == 2){
                if (Input.GetKeyDown(KeyCode.A)){
                    playerCtrl.SetPlayerHpValueChange(gm.infoSys.attackValue);
                }
            }
        }
    }
    void OnDestroy(){
        EventCenter.Instance.RemoveEventListener<Vector3>("MonsterPositionChanged", OnMonsterPositionChanged);
    }
    void OnMonsterPositionChanged(Vector3 newPosition){
        monsterPos = newPosition;
        Player01A(transform.position, monsterPos);
    }
    #endregion
}

再将该脚本增加到资源框架上

保存后运行项目

本章利用事件中心实现了主角战士平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

相关推荐
Xin_ye100861 天前
C# 零基础到精通教程 - 第七章:面向对象编程(入门)——类与对象
开发语言·c#
rockey6271 天前
AScript异步执行与await关键字
c#·.net·script·eval·expression·异步执行·动态脚本
程序leo源1 天前
Qt窗口详解
开发语言·数据库·c++·qt·青少年编程·c#
月巴月巴白勺合鸟月半1 天前
质本洁来还洁去,强于污淖陷文本
c#
Xin_ye100861 天前
C# 零基础到精通教程 - 第八章:面向对象编程(进阶)——继承与多态
开发语言·c#
asdzx672 天前
使用 C# 打印 Excel 文档(详细教程)
c#·excel
伽蓝_游戏2 天前
第四章:AssetBundle 核心机制与文件结构
unity·c#·游戏引擎·游戏程序
2501_930707782 天前
使用C#代码拆分 PowerPoint 演示文稿
开发语言·c#·powerpoint
SenChien2 天前
C#学习笔记-入门篇
笔记·学习·c#·rider
诙_2 天前
由C++速通C#
开发语言·c#