找回密码
 点一下
查看: 3064|回复: 11

【数据教程】关于弹药相关的一些整理

[复制链接]
发表于 2010-6-21 14:10:29 | 显示全部楼层 |阅读模式
很久没写东西了...放假了半个月,之前的热度降温不少- -#  从今天开始继续努力吧~嗯嗯
今天主要是写点关于弹药体系的分析...因为群里面这几天有几个朋友在问这方面的东西~于是我这边先把我所了解的丢出来,之后大家一起讨论下吧

实际上所谓的弹药体系也是属于ABE的,无外乎可能会加上一个Weapon、再加上一个Mover而已~不是很复杂的说~下面我们就开始介绍吧~
我理解的弹药体系的结构如下~
弹药Unit相关.jpg



1)弹药Unit相关。它包括弹药单位Unit的一系列定义,还包括其相关的Actor和Model。以及弹药的移动方式的定义Mover。
关于Unit,Model,Actor中如何去定义这里就不细说的。在这里需要强调一下的是,可以作为弹药的Unit是广义的,也就是说:用某种兵种作为弹药也是可行的,不是必须是MISSILE。

这里把MISSILE以及MISSILE_INVULNERABLE的模板定义给大家说明一下。MISSILE以及MISSILE_INVULNERABLE是系统中已经定义好的Unit的模板,其中的一些属性已经按照基础弹药的需求做了设定,下面我们分析一下。
【MISSILE】
    default="1":不可直接应用,必须被实现后才可被使用。
    <CUnit default="1" id="MISSILE">   
        无死亡揭示半径。所谓【Reveal揭示】即为战争迷雾中可让玩家看见。  
        <DeathRevealRadius value="0"/>   
        无死亡揭示时间。
        <DeathRevealDuration value="0"/>  
        飞弹单位被控攻击后,不做出响应。关于响应还有两个值可以设定,即逃离Flee和捕获Acquire。
        <Response value="Nothing"/>   
        飞弹单位的默认生命起始值10点。   
        <LifeStart value="10"/>
        飞弹单位的默认生命最大值10点。         
        <LifeMax value="10"/>      
       这里是定义了一个Token,意为:移动控制器的Link ID为飞弹单位的同名ID。      
        <Mover value="##id##"/>   
        飞弹为飞行单位。        
        <PlaneArray index="Air" value="1"/>
        飞弹的半径为0。
        <Radius value="0"/>              
        飞弹碰撞后的分离半径为0。
        <SeparationRadius value="0"/>     
        飞弹最小半径为0。
        <MinimapRadius value="0"/>        
        编译其中的分类为弹丸Projectile。
        <EditorCategories value="ObjectType:Projectile"/>   
        飞弹单位不可转动。
        <FlagArray index="Turnable" value="0"/>        
        飞弹单位不能被命令。
        <FlagArray index="Uncommandable" value="1"/>   
        飞弹单位不能被选择。
        <FlagArray index="Unselectable" value="1"/>   
        飞弹单位不能被作为目标。
        <FlagArray index="Untargetable" value="1"/>   
        飞弹单位为可投射物。
        <FlagArray index="Missile" value="1"/>         
        飞弹单位被击杀时不提供击杀得分。
        <FlagArray index="KillCredit" value="0"/>      
        飞弹单位被击杀时不提供得分。
        <FlagArray index="NoScore" value="1"/>         
        飞弹单位死亡时不会触发死亡事件。
        <FlagArray index="NoDeathEvent" value="1"/>   
        飞弹单位是没有放置空间的,即穿透的。
        <EditorFlags index="NoPlacement" value="1"/>  
        飞弹单位闲置时动作的延迟为0。
        <Fidget DelayMin="0" DelayMax="0"/>            
    </CUnit>

【MISSILE_INVULNERABLE】
    default="1":不可直接应用,必须被实现后才可被使用。他继承所有的飞弹MISSILE的属性。
    <CUnit default="1" id="MISSILE_INVULNERABLE" parent="MISSILE">  
        飞弹单位是无敌的。
        <FlagArray index="Invulnerable" value="1"/>   
    </CUnit>

2)弹药的生产。关于生产,必定是通过技能CAbilArmMagazine来控制的。
弹药生产技能CAbilArmMagazine的基本属性。
【CAbilArmMagazine】
弹药CAbilArmMagazine相关.jpg



3)弹药的消耗。
这里需要明确的是:弹药的消耗一定基于它的召唤/呼叫,使用,释放的【效果Effect】的定义。而如何触发相关的行为,可以使用某个射击相关的技能来触发,也可以是用普通攻击的武器效果做为触发方式,甚至可以是个行为。

先阐述一下召唤/呼叫CEffectUseCalldown,使用CEffectUseMagazine,释放CEffectReleaseMagazine的简单区别:
CEffectUseCalldown用来消耗普通弹药,一般为飞弹(无自身的特有属性,即非智能的弹药类型)。发射后或击中目标后自动被释放。CEffectUseMagazine与CEffectReleaseMagazine一般都是某种有自身属性的的单位Unit。即为此类弹药,有自身的武器,技能,行为等,可独立完成某些工作。CEffectUseMagazine可以理解为让弹药单位去做某些事情,如果弹药的单位本身还存活的话,弹药库存不被消耗。如航母的小飞机,当小飞机出去执行攻击任务时,弹药并没有被消耗。而CEffectReleaseMagazine可以理解为把弹药丢出来,让弹药自己去做某些事情,如巢穴领主丢出来的寄生虫,寄生虫被丢出时弹药已经被消耗了。


弹药召唤CEffectUseCalldown相关的基本属性。
弹药CEffectUseCalldown相关.jpg

弹药使用CEffectUseMagazine相关的基本属性。
弹药CEffectUseMagazine相关.jpg

弹药释放CEffectReleaseMagazine相关的基本属性。
弹药CEffectReleaseMagazine相关.jpg


抽空做了一个类似金甲虫子弹的例子,等做好了给大家发~不是完全模拟,只是相似~

评分

参与人数 1威望 +3 收起 理由
Renee + 3 lz加油~~

查看全部评分

发表于 2010-6-21 16:45:49 | 显示全部楼层
异常帅气!
感谢!
回复

使用道具 举报

发表于 2010-6-21 17:22:06 | 显示全部楼层
收藏了。。。正好想看看弹药方面的。。。
异常帅气!
感谢!
回复

使用道具 举报

 楼主| 发表于 2010-6-21 19:30:52 | 显示全部楼层
不客气不客气~嘿嘿~有什么问题一起讨论
回复

使用道具 举报

 楼主| 发表于 2010-6-24 00:18:22 | 显示全部楼层
做了一个弹药技能,算是和金甲虫的炮弹有点关系,随便玩玩吧。
地图的第二行第三个技能。

SMSJ.rar

1.3 MB, 下载次数: 52

回复

使用道具 举报

发表于 2010-6-24 00:35:29 | 显示全部楼层
大有用.加油
回复

使用道具 举报

发表于 2010-6-25 22:41:50 | 显示全部楼层
弱弱的问一句。。。导弹碰撞检测在哪里啊。。
我弄了个结果指哪里他就打哪里。。我想弄成打飞机那种。。一旦碰到敌人就会爆。。。调了很多地方都没试出来。。
回复

使用道具 举报

发表于 2010-6-25 22:54:42 | 显示全部楼层
突然想了下。。是给飞弹单位一个武器吗?然后当飞弹飞到一个单位旁边,单位进入了飞弹的武器范围,于是就会自动触发武器效果。。然后武器效果就是爆炸效果...感觉好像可以。。。要睡觉了,明天我再去试试。。- -
回复

使用道具 举报

发表于 2010-6-26 01:40:27 | 显示全部楼层
终于试出来了个龌龊的办法了。。。- - 就是给导弹弄了个BUFF,然后有个验证器判定一定半径内是否有怪。。有怪就删掉这个BUFF。。删掉这个BUFF触发的效果就是爆炸。。。。。但总感觉应该还有更简便点的方法。。
回复

使用道具 举报

 楼主| 发表于 2010-6-26 23:15:28 | 显示全部楼层

回 8楼(gamedsn) 的帖子

关于子弹的碰撞伤害,我都是使用子弹自带搜索效果来做的。[伤害+自杀]这两个效果组合。没找到直接办法,如果有什么思路可以互相启发下~恩恩
另,我前段时间写冲击波之类的技能介绍帖子的地图中有相关的做法,可以看看。
回复

使用道具 举报

发表于 2010-6-27 09:13:05 | 显示全部楼层
额 感觉ls的ls的方法挺好的呀
回复

使用道具 举报

发表于 2011-4-20 13:38:31 | 显示全部楼层
刚好要做这方面的 太感谢楼主了 好帖子 顶起!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-9-28 06:40 , Processed in 0.039630 second(s), 23 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表