[开发者心得] 坤坤出品|PrefabEvent二次开发教程——攻击协议④

[复制链接]
2094 |2
森林鹿 发表于 2023-3-6 13:53:25 | 显示全部楼层 |阅读模式
目录
攻击协议④


不懂这是什么的小伙伴建议先看初始化流程①哦~

攻击协议(PrefabEvtFight)
这个协议用于传递战斗信息,比如击中目标、伤害发起、治疗还有复活之类的通知,可以让。在使用这个的协议的时候,受害方只需要去监听相关的击中信息,而发起方只需要去提供通知就可以完成这一套流程。可以用在陷阱的制作,敌人的制作以及角色战斗上。
这个协议中也包含了装备通知,当前的装备枚举只包含了武器一种类型,这个协议主要是让不同的装备预制体去互斥,在装备一个武器的时候去发起这个通知,然后所有的装备类预制体都会监听这个消息,在装备的预制体不是自己的时候去卸载已经装备的武器,使得装备槽只存在一个预制体作为主装备。

示例-可破坏物体:
这里的示例需要提前先安装玩家系统、冷兵器或者热武器预制体。

这一段代码中通过在服务端注册了受击事件,并且在自己维护的hp小于0后广播了死亡的事件。也通过hurt接口去伤害了目标源。这个脚本可以放置在一个不是触发器的模型下面。

private _currHp: number = 100;
protected onStart() {
    if (Util.SystemUtil.isServer()) {
        //受击事件监听
        PrefabEvent.PrefabEvtFight.onHit(this.server_onHit.bind(this));
    }
}
private server_onHit(senderGuid: string, targetGuid: string, damage: number, hitPoint: Type.Vector) {
        //被伤害的目标是否是自己
        if (targetGuid != this.gameObject.guid) return;
        //如果已经死亡则不重复处理
        if (this._currHP <= 0) return;
        //扣血逻辑
        this._currHP -= damage;

        if (this._currHP <= 0) {
            //处理死亡事件
            PrefabEvent.PrefabEvtFight.die(this.gameObject.guid);
        }
        //攻击反伤
        if (this._currHP >= 0) {
            if (this.counterAttackDamage != 0) {
                PrefabEvent.PrefabEvtFight.hurt(this.gameObject.guid, senderGuid, 20);
            }
        }
    }





回复

使用道具 举报

空伊伊 发表于 2023-3-7 19:26:52 | 显示全部楼层
这目录结构学到了,我也要这样写帖子
回复

使用道具 举报

森林鹿楼主 发表于 2023-3-8 11:38:06 | 显示全部楼层
空伊伊 发表于 2023-3-7 19:26
这目录结构学到了,我也要这样写帖子


回复

使用道具 举报

热门版块
快速回复 返回顶部 返回列表