SDL中文论坛

标题: 动画素材:闪电攻击 [打印本页]

作者: ancientcc    时间: 2020-9-4 08:36
标题: 动画素材:闪电攻击
闪电攻击是攻击动画中的一种,实现它分两个步骤:
1)编写WML。在要能闪电攻击兵种的[unit_type]块中增加一个表示闪电攻击的[attack_anim]
2)绘制相关图像。

闪电攻击WML定义,摘自咒术师兵种
  1. [unit_type]
  2.         ......
  3.         {DUDU_LIGHTNING 1}
  4.         {DUDU_LIGHTNING 2}
  5.         {DUDU_LIGHTNING 3}
  6.         ......
  7. [/unit_type]
复制代码
宏:DUDU_LIGHTNING
  1. #define DUDU_LIGHTNING DIRECTION_NUMBER
  2. [attack_anim]
  3.         [filter_attack]
  4.                 name=lightning
  5.         [/filter_attack]

  6.         {LIGHTNING_BOLT {DIRECTION_NUMBER} }

  7.         [if]
  8.                 hits=yes
  9.                 [frame]
  10.                         begin=-300
  11.                         end=-200
  12.                         image="units/human-kingdom/zhoushushi-ranged1.png"
  13.                         sound=lightning.ogg
  14.                 [/frame]
  15.         [/if]
  16.         [else]
  17.                 hits=no
  18.                 [frame]
  19.                         begin=-300
  20.                         end=-200
  21.                         image="units/human-kingdom/zhoushushi-ranged1.png"
  22.                         sound=lightning-miss.ogg
  23.                 [/frame]
  24.         [/else]
  25.         [frame]
  26.                 begin=-200
  27.                 end=-100
  28.                 image="units/human-kingdom/zhoushushi-ranged2.png"
  29.         [/frame]
  30.         [frame]
  31.                 begin=-100
  32.                 end=100
  33.                 image="units/human-kingdom/zhoushushi-ranged1.png"
  34.         [/frame]
  35. [/attack_anim]
  36. #enddef
复制代码
宏:LIGHTNING_BOLT
  1. #define LIGHTNING_BOLT DIRECTION_NUMBER
  2. [if]
  3.         direction=sw,s,se

  4.         [missile_frame]
  5.                 begin=-250
  6.                 end=150
  7.                 halo=halo/lightning-bolt-{DIRECTION_NUMBER}-1.png~FL(vert):100,halo/lightning-bolt-{DIRECTION_NUMBER}-2.png~FL(vert):100,halo/lightning-bolt-{DIRECTION_NUMBER}-3.png~FL(vert):100,halo/lightning-bolt-{DIRECTION_NUMBER}-4.png~FL(vert):100
  8.                 halo_y=-125
  9.                 offset=1.0
  10.         [/missile_frame]
  11. [/if]
  12. [else]
  13.         direction=nw,n,ne

  14.         [missile_frame]
  15.                 begin=-250
  16.                 end=150
  17.                 halo=halo/lightning-bolt-{DIRECTION_NUMBER}-1.png:100,halo/lightning-bolt-{DIRECTION_NUMBER}-2.png:100,halo/lightning-bolt-{DIRECTION_NUMBER}-3.png:100,halo/lightning-bolt-{DIRECTION_NUMBER}-4.png:100
  18.                 halo_y=-125
  19.                 offset=1.0
  20.         [/missile_frame]
  21. [/else]
  22. #enddef
复制代码

作者: ancientcc    时间: 2020-9-4 08:41
LIGHTNING_BOLT中含有[if]/[else],它是个要被预扩展宏,预扩展根据是攻击方向参数,direction。
(, 下载次数: 2815)
上图中诸葛亮是攻击方,司马炎是防御方,这时诸葛亮向北攻击,满足direction=nw,n,ne(n:north)这个条件。针对direction=nw,n,ne,DIRECTION_NUMBER=2,它展开的宏是:

  1. [missile_frame]
  2.         begin=-250
  3.         end=150
  4.         halo=halo/lightning-bolt-2-1.png:100,halo/lightning-bolt-2-2.png:100,halo/lightning-bolt-2-3.png:100,halo/lightning-bolt-2-4.png:100
  5.         halo_y=-125
  6.         offset=1.0
  7. [/missile_frame]
复制代码
[missile_frame]在[attack_anim]这个动画标签的直接根下,且满足支画线画帧[xxx_frame]命名约定,它的画帧前缀是“missile_”,因而它可以自成一条画线。这条画线显示类型是光环(halo),持续时间400毫秒(150-(-250)),其图像显示规则:
[-250...-150):显示图像lightning-bolt-2-1.png;
[-150...-50):显示图像lightning-bolt-2-2.png;
[-50...50):显示图像lightning-bolt-2-3.png;
[50...150):显示图像lightning-bolt-2-4.png;
以下依次是lightning-bolt-2-1/2/3/4.png,四个图像同尺寸,都是200 x 360
(, 下载次数: 2816) (, 下载次数: 2838) (, 下载次数: 3013) (, 下载次数: 3024)

halo_y字段
让对比halo_y=-125和halo_y=0时的两种情况:(为了清晰看到halo图像被叠加到哪里,对该图像加了红框)
halo_y=-125 (, 下载次数: 12893) halo_y=0 (, 下载次数: 12924)
halo_y:以像素为单位,光环相对于单位中心在Y方向上的偏移值。在上两幅图中,相比halo_y=0,halo_y=-125把光环(中心点)向上挪了125像素。

offset字段
让再看halo_y=0,offset=0.0时图像,把它和halo_y=0,offset=1.0对比看(不是halo_y=-125,halo_y=0时和格子边界对齐,比较起来较直观)
halo_y=0,offset=0.0 (, 下载次数: 12867)
offset:相对于A面向的格子图像位置偏移。0.0,显示光环(中心点)在格子中心;1.0,光环在面向的格子的中心;-1.0,光环中心点在A的背向格子。
以上实例表现出来就是光环中心从司马炎变成了诸葛亮。这里因为方向是正北,offset在X方向上不产生作用,实现效果等同halo_y。

当halo_x,halo_y,offset都为0时,光环中心点在原格子。




欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/) Powered by Discuz! X3.3