武器 | 说明 |
弩箭 | 最基础的武器,直线发出弩箭,攻击路线上命中的第一个敌人,造成单体伤害。 |
投掷发射器 | 投出抛物线爆弹,爆弹落地后会弹跳2次,当2次弹跳结束后或者轨迹中碰到敌人时,爆弹就会爆炸,对范围内的所有敌人造成伤害。 |
自跟踪武器 | 可以发射出锁定目标的子弹,自动锁定最近的敌人,子弹一旦发出就会追踪目标而去,直到击中目标,对目标造成较大单体伤害。 |
火箭炮 | 重型武器,在较长的蓄力(表现为填装炮弹并瞄准)后,发射出火箭炮,火箭炮慢速向前飞行,击中路线上的第一个敌人或撞上障碍物后会爆炸,对大范围内的敌人造成伤害。 |
表项 | 作用 |
Id | 武器的id,唯一的标识。 |
武器名称 | 武器名称。 |
icon | 武器图标的资源文件。 |
说明 | 武器的说明文字。 |
子弹数量 | 武器可以装载的最大子弹数量,-1代表子弹无限。 |
子弹轨迹 | 子弹发射出去的轨迹:0=直线,1=抛物线,2=追踪。 |
子弹速度 | 子弹飞行的速度。 |
子弹参数 | 如果子弹是抛物线,那么这个参数就是顶点高度;如果子弹是追踪的,这个就是追踪规则(blabla大段)。 |
伤害范围 | 子弹打中敌人后的伤害范围,0代表单体目标,>0代表子弹的爆炸半径。 |
伤害系数 | 子弹的杀伤力,用于带到伤害计算公式中计算伤害。 |
聚气时间 | 开枪时候需要预先聚气的时间,此时角色会做出举枪聚气的动作,待聚气时间结束后,子弹发射出去,玩家在聚气时间是不能操作角色的。 |
冷却时间 | 子弹发射出去多久以后可以再次发射。 |
武器图形 | 武器拿在手里的图形。 |
子弹图形 | 子弹的图形。 |
命中图形 | 子弹击中目标时,播放的图形效果,主要用于爆炸。 |
发射音效 | 子弹发射出来的音效。 |
命中音效 | 子弹命中目标时候的音效。 |
被击表现 | 被子弹击中的敌人做出的动作名。 |
最大等级 | 武器的最大等级,强化武器最终不会超过这个等级。 |
价格 | 武器卖店的价格。 |
稀有程度 | 武器的稀有程度,0=白色,1=绿色,2=蓝色,3=紫色,4=橙色。 |
数据 | 作用 |
Id | String,武器模板(或者说单种类武器)的唯一标示。 |
名称 | String,武器名称。 |
说明 | String,武器说明。 |
Icon | String,武器icon文件名。 |
造型 | String,武器拿在手里的造型文件夹名。 |
冷却时间 | Int,单位毫秒,武器使用的冷却时间。 |
Timeline | String,使用武器(即开火)之后,角色会做出的动作,在这个动作中,会负责决策发射出的子弹等信息。 |
OnFire | String,武器发射后的回调函数,在武器发射开始执行Timeline的同时,会给出一个回调函数,调用策划编写的逻辑脚本,程序提供的回调参数: l WeaponObj*:使用的武器。 l Character*:使用武器的人。 |
属性 | 说明 |
UniqueId | String,唯一id,在这个世界上,任何一把武器的实体都是唯一的,即使他们采用同一个模板生成。 |
Model | Weapon,非指针,而是克隆一个Model,即武器的模板信息,改装等玩法可能改变这个武器的信息。 |
子弹 | Hash<String, AoE>和Hash<String, Bullet>,Timeline中的子弹发射点作为key,Value就是要发出的子弹对象的模板。 |
等级 | Int,武器当前的等级,当然还会有很多关于武器强化的属性,这里就列几个说明一下问题。包括稀有程度(如果可以被提升),星级(如果可以被提升)都会放在这里,如果不能提升的, 比如“AK47不论怎么升级都是蓝色的”,那“颜色”就应该放到Model中去。 |
价格 | Int,当前武器的卖家,由于强化之后武器的价格会变高,因此他属于Obj而不是Model,Model中顶多可以有一个参数用于获取这个值。 |
事件类型 | 说明 |
播放动作 | 让Timeline的宿主开始做一个动作1次,需要的参数: l 动作名:播放什么动作。 l 保持:保持某一段的动作(用于死亡动作等)。 |
场景特效 | 在场景中指定位置播放一个视觉特效,需要的参数: l 特效名:播放什么特效。 l 位置:在什么位置播放。 l 循环:1次还是始终。 l 时间:如果不是1次的,那么播放多久结束。 |
角色特效 | 在宿主身上播放一个视觉特效,需要的参数。 l 特效名:播放什么特效。 l 绑点:角色身上某个播放这个特效的点。 l 循环:1次还是始终。 l 时间:如果不是1次的,那么播放多久结束。 |
产生AoE | 产生出AoEObj,即非锁定类子弹,需要的参数: l AoEId:要产生的AoEObj,他的Model的Id。这个会由Timeline产生的时候决策,是从某个WeaponObj的子弹Hash表中获得,还是直接走读取的值,这是一个有点Magic的用法。 l 位置:AoEObj初始坐标。 l 生命周期:AoEObj存在时长。 l Tween:AoEObj的运动轨迹和变化方式,不仅仅是坐标的变化,还可以设置如范围等的变化。 |
产生Bullet | 产生出bulletObj,即锁定类子弹,需要的参数: l bulletId:创建这个bulletObj所用的Model的id,和AoEId一样有个Magic用法(我都不好意思再写了)。 l 位置:bulletObj产生时候的位置。 l 生命周期:bulletObj最多存在多久。 l 速度:这发bulletObj的速度。 l 目标:选择目标的规则,返回一个Character*。 |
开始僵直 | 从这个时间点开始,角色将进入僵直,所谓僵直就是不再接受操作指令,直到做其他动作(进入另一个Timeline了,比如受伤、死亡)。无参数。 |
结束僵直 | 从这个时间点开始,角色将离开僵直。无参数。 |
其他 | 以上只是一些举例,根据实际需要,可以在Timeline中加入更多的动作类型,比如给宿主添加buff等,这个看项目的需要决定,而针对本文中的上述范例,是没有这个需求的。 |
属性 | 说明 |
Id | String,AoE模板的id,每一个模板都是唯一的。 |
视觉效果 | String,位于AoEObj位置上要播放的特效,可以没有即不播放。 |
循环播放 | Boolean,是否要反复循环的播放这个特效,如果没有特效这个就没意义。 |
范围 | Int,AoE的初始有效范围,实际有效范围以AoEObj为准,由于这个游戏的设定,因此范围都是圆形的,这里的数据是圆形的半径。 |
碰角色结束 | Enum,这个AoEObj在碰撞到任何角色时是否会结束?有几个风格: 1, 任何碰撞角色都不会结束。 2, 碰撞到Caster同阵营角色结束。 3, 碰撞到非Caster同阵营角色结束。 4, 碰撞任何角色结束。 |
碰障碍结束 | Boolean,这个AoEObj在碰撞任何地形的时候是否会结束。 |
OnEnter | String,当有角色进入AoEObj的瞬间触发的回调,一个角色在一个AoEObj的生命周期内,只能触发一次这个回调。需要的参数: l AoEObj:AoEObj*,这个AoEObj。 l EnterCharacter:Character*,进入AoE范围内的这个角色。 l CharacterInRange:Array<Character*>,所有当前已经在AoEObj范围内的角色(不包含EnterCharacter)。 l DesignParam:Array<Int>,策划配置的一些int值。 |
OnDestory | String,当AoE结束时执行的函数回调。需要的参数: l AoEObj:AoEObj*,这个AoEObj。 l CharacterInRange:Array<Character*>,所有此时在AoEObj范围内的角色。 l DesignParam:Array<Int>,策划配置的一些int值。 |
属性 | 说明 |
UniqueId | String,每一个存在于世界上的子弹都是独一无二的。 |
Model | AoE*,产生这个子弹的Model,由此获取基础信息。 |
释放者 | Character*,这个子弹的创建者,可能是Null,比如来自地形。 |
位置 | Position,当前这个时间点上,这个子弹的位置,对于一个射击游戏而言,大多子弹的位置应该是经常变动的。 |
范围 | Int,子弹当前的逻辑有效范围。 |
生命周期 | Int,还有多久AoEObj就将结束。 |
其他 | 根据需要还可以添加一些其他的信息,包括可以给策划一个Param来记录一些动态的数据等。 |
属性 | 说明 |
Id | String,子弹模板的Id,唯一的标识。 |
造型 | String,子弹的图形文件。 |
范围 | Int,子弹的初始有效范围,同样是一个圆形,所以这代表了半径。 |
碰障碍结束 | Boolean,子弹是否会因为碰撞任何障碍物而结束。 |
OnHit | String,当子弹命中了追踪的目标后执行的回调函数,如造成伤害,产生爆炸等逻辑都编写在这个脚本中。只有子弹真的命中了目标(或者碰障碍而结束的时候)才会进入这个回调,如果子弹提前消失就不会进入。需要的参数: BulletObj:BulletObj*,这个子弹。 TargetCharacter:Character*,被击中的角色,可能是Null,因为存在碰撞障碍物结束的可能性。 DesignParams:Array<int>,策划填写的一些int值。 |
属性 | 说明 |
UniqueId | String,世界上任何一个子弹都是唯一的。 |
Model | Bullet*,创建这个Obj的模板。 |
释放者 | Character*,释放这个子弹的目标,可能是Null,比如GM指令创建的。 |
追踪目标 | Character*,子弹追踪的目标,如果这个目标不存在了,子弹也就结束了 |
位置 | Position,子弹在这一时刻所在的世界位置。 |
范围 | Int,子弹当前的有效范围。 |
生命周期 | Int,子弹剩余的时间,如果生命周期小于等于0,那么子弹也就销毁了,不会进入OnHit回调。 |
数据 | 说明 |
id | String,每一个配方需要独特的标识。 |
产出结果 | Weapon,最后产出的结果的Model(但是产出的还是WeaponObj,是由这个Model为依据产生的)。 |
材料 | Array<ItemObj>,需要的材料的。 |
资源 | Array<Resource>,需要的资源,如金币,石油等等。 |