SDL中文论坛
标题:
动画素材:闪电攻击
[打印本页]
作者:
ancientcc
时间:
2020-9-4 08:36
标题:
动画素材:闪电攻击
闪电攻击是攻击动画中的一种,实现它分两个步骤:
1)编写WML。在要能闪电攻击兵种的[unit_type]块中增加一个表示闪电攻击的[attack_anim]
2)绘制相关图像。
闪电攻击WML定义,摘自咒术师兵种
[unit_type]
......
{DUDU_LIGHTNING 1}
{DUDU_LIGHTNING 2}
{DUDU_LIGHTNING 3}
......
[/unit_type]
复制代码
宏:DUDU_LIGHTNING
#define DUDU_LIGHTNING DIRECTION_NUMBER
[attack_anim]
[filter_attack]
name=lightning
[/filter_attack]
{LIGHTNING_BOLT {DIRECTION_NUMBER} }
[if]
hits=yes
[frame]
begin=-300
end=-200
image="units/human-kingdom/zhoushushi-ranged1.png"
sound=lightning.ogg
[/frame]
[/if]
[else]
hits=no
[frame]
begin=-300
end=-200
image="units/human-kingdom/zhoushushi-ranged1.png"
sound=lightning-miss.ogg
[/frame]
[/else]
[frame]
begin=-200
end=-100
image="units/human-kingdom/zhoushushi-ranged2.png"
[/frame]
[frame]
begin=-100
end=100
image="units/human-kingdom/zhoushushi-ranged1.png"
[/frame]
[/attack_anim]
#enddef
复制代码
宏:LIGHTNING_BOLT
#define LIGHTNING_BOLT DIRECTION_NUMBER
[if]
direction=sw,s,se
[missile_frame]
begin=-250
end=150
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
halo_y=-125
offset=1.0
[/missile_frame]
[/if]
[else]
direction=nw,n,ne
[missile_frame]
begin=-250
end=150
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
halo_y=-125
offset=1.0
[/missile_frame]
[/else]
#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,它展开的宏是:
[missile_frame]
begin=-250
end=150
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
halo_y=-125
offset=1.0
[/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