Unity3D自学笔记——星际2技能系统分析(三)Ability(Effect)
来源:互联网 发布:手机打开淘宝链接 编辑:程序博客网 时间:2024/05/15 05:27
星际2技能系统分析(三)Ability(Effect)
技能施放的阶段
技能被分为了7个阶段
Approach:接近
Wait:等待
Prep:准备
Cast:施放
Channel:引导
Finish:结束
Bail:保释
AbilEffect
效果技能基类
属性
好吧。。太多了
Arc:施法范围,若目标不在范围内,单位会自动调整至目标进入施法范围
Cost:技能消耗
AutoCast:自动释放技能的属性
Effect:技能应用的效果,默认值为##id##,既Id相同的CEffect
EffctRange : 效果范围
然后就是一堆技能各个阶段的配置:比如哪个阶段可以被强行中断,哪个阶段可以返回Cost, 哪个阶段取消特效等
XML定义
<CAbilEffect default="1"> <!--目标离开施法者距离1米远后,施法取消--> <RangeSlop value="1"/> <!--目标离开施法弧形11.25角度后,施法取消--> <ArcSlop value="11.25"/> <!--自动施法,主动攻击--> <AutoCastAcquireLevel value="Offensive"/> <!--自动施法对象, 可见的;玩家;同盟--> <AutoCastFilters value="Visible;Player,Ally"/> <!--联盟变换后中止--> <Flags index="AbortOnAllianceChange" value="1"/> <!--最小引导--> <Flags index="ChannelingMinimum" value="1"/> <!--使用施法者半径范围--> <Flags index="RangeUseCasterRadius" value="1"/> <!--再次接近--> <Flags index="ReApproachable" value="1"/> <!--目标在视野范围内--> <Flags index="RequireTargetVision" value="1"/> <!--等级改变时更新充电--> <Flags index="UpdateChargesOnLevelChange" value="1"/> <!--等待耗尽--> <Flags index="WaitToSpend" value="1"/> <!--找到相同ID的Effect--> <Effect value="##id##"/> <!--效果距离0 - 500 --> <EffectRange value="0,500"/> <AINotifyEffect value="##id##"/> <!--接近阶段可以退还消耗--> <RefundArray index="Approach" value="1"/> <!--准备阶段可以退还消耗--> <RefundArray index="Prep" value="1"/> <!--施放阶段可以退还消耗--> <RefundArray index="Cast" value="1"/> <!--退还的消耗系数--> <RefundFraction> <!--水晶矿--> <Resource index="Minerals" value="-1"/> <!--气矿--> <Resource index="Vespene" value="-1"/> <!--人口--> <Resource index="Terrazine" value="-1"/> <!--自定义--> <Resource index="Custom" value="-1"/> <!--充能--> <Charge value="-1"/> <!--CD--> <Cooldown value="-1"/> </RefundFraction> <UseMarkerArray index="Approach" value="1"/> <UseMarkerArray index="Prep" value="1"/> <UseMarkerArray index="Cast" value="1"/> <UseMarkerArray index="Channel" value="1"/> <PauseableArray index="Approach" value="1"/> <PauseableArray index="Prep" value="1"/> <PauseableArray index="Cast" value="1"/> <PauseableArray index="Channel" value="1"/> <PauseableArray index="Finish" value="1"/> <PreemptableArray index="Approach" value="1"/> <PreemptableArray index="Prep" value="1"/> <PreemptableArray index="Channel" value="1"/> <DefaultError value="MustTargetUnit"/> <AcquirePriority value="3"/> <SetLastTarget value="Unknown"/></CAbilEffect>
AbilEffectInstant
立即生效的效果技能基类
属性
XML定义
<CAbilEffectInstant default="1"> <CmdButtonArray index="Execute"> <Flags index="ShowInGlossary" value="1"/> </CmdButtonArray></CAbilEffectInstant>
实体类
人族机枪兵兴奋剂技能,首先需要花费10点生命值
下图强化剂挂载的模组
使用兴奋剂的逻辑猜测
1. 玩家点兴奋剂按钮
2. 如果技能不处于冷却状态,则UseStimpack为真
3. 启用Simpack技能
4. 从挂载的效果模组中找到EffectID = ‘Simpack’的Effect
<CEffectApplyBehavior id="Stimpack"> <EditorCategories value="Race:Terran"/></CEffectApplyBehavior>
CEffectApplyBehavior是增加行为的效果,括号内的文字是编辑器里取的别名与ID无关
5. 执行兴奋剂的逻辑处理
6. 兴奋剂效果又挂载了一个行为模组
7. 执行兴奋剂的行为逻辑
CBehaviorBuff是Buff行为
AbilEffectTarget
目标效果技能基类,选择目标后触发效果
属性
FinishCommand:单位完成技能后使用的命令
XML定义
<CAbilEffectTarget default="1"> <CmdButtonArray index="Execute"> <Flags index="ShowInGlossary" value="1"/> </CmdButtonArray> <Flags index="BestUnit" value="1"/> <FollowRange value="5"/></CAbilEffectTarget>
实体类
机枪兵的搭档的医疗兵治疗技能
<CAbilEffectTarget id="MedivacHeal"> <OrderArray index="0" DisplayType="Confirm" Model="Assets\UI\Cursors\WayPointAttack_Void\WayPointAttack_Void.m3"/> </CAbilEffectTarget>
貌似不是医疗兵,是医疗运输机- -
表示还没玩过星际2,哈哈哈,建了个图实验了下
让机枪兵自相残杀,医疗运输机自动加血
治疗技能无CD
治疗逻辑猜测
1.治疗技能是自动施放
2.首先执行验证器
healCasterMinEnergy:治疗运输机是否有足够的能量
healSmartTargetFilters :筛选需要治疗的对象
NotWrapingIn : 没有被缠绕
3. 验证通过后施放技能
4. 执行MedivacHeal效果
<CEffectCreateHealer id="MedivacHeal"> <ValidatorArray value="IsBiological"/></CEffectCreateHealer>
发现没有挂载治疗相关的逻辑部分,然后看CEffectCreateHealer
定义了消耗能量和修复比例,但是米有指定修复哪种属性,然后看默认值
目标被治疗的活力类型为Life
- Unity3D自学笔记——星际2技能系统分析(三)Ability(Effect)
- Unity3D自学笔记——星际2技能系统分析(二)Ability(Move, Stop, Attack)
- Unity3D自学笔记——星际2技能系统分析(四)Ability(Behavior)
- Unity3D自学笔记——星际2技能系统分析(五)Effect(Damage)
- Unity3D自学笔记——星际2技能系统分析(一)
- Unity3D自学笔记——Photon服务器的后台架构实现(三)
- Unity3D自学笔记——架构应用(三)JsonToEntity帮助类
- Unity3D自学笔记——UGUI背包系统(三)物品弹出提示框
- Unreal Engine 4(虚幻UE4)GameplayAbilities 插件入门教程(三)技能标签(Ability Tags)
- Unity3D自学笔记——有限状态机(一)框架搭建
- Unity3D自学笔记——脚本生命周期
- Unity3D自学笔记——Transform
- Effect(三)—— fyLinkRibbon
- 产品学习笔记2—产品经理技能三核心
- Linux 自学笔记(三)——crontab 详解
- Unity3D自学笔记——MonoBehavior响应事件
- Unity3D自学笔记——碰撞检测示意图
- Unity3D自学笔记——脚本开发基础数学
- 一个将要成为程序猿的Boy
- angularJs demo
- 新闻发布项目——Servlet类(doNewsAddServlet)
- 网页布局学习
- Jstl之核心标签库与格式标签库使用
- Unity3D自学笔记——星际2技能系统分析(三)Ability(Effect)
- 新闻发布项目——Servlet类(doNewsModifyServlet )
- iOS开发之获取系统相册ALAssetLibrary
- Java系列(十七)__Java IO(1)
- Android判断有无网络的方法
- 汉字转换为拼音
- 微信小程序学习内容
- 内存管理模拟实验之实现一个简单的固定(可变)分区存储管理系统
- C语言中的位运算