我并不打算在这解释这些强力工具。想看更多相关信息的话,你应该到Mugen Docs里面去看。在bgs.html中的第IV部分就有背景控制器的相关信息。
Tamez就背景控制器写过一份层次高深的教程,在其中解释了动画变化(Animation Change)、速度设定(VelSet)和速度增加(VelAdd)。点击链接观看教程视频请点击链接(已失效): //phantomgs.forumotion.net/help-f34/tamez-s-tips-tricks-and-tutorials-t118.htm
不过,就像Mike Werewolf 在他的Mugen Docs法文翻译中所指出的那样,文档所提供的简单例子中有错误。所以,这里为你提供了一份修正后版本:
-- 简单例子 --
假设我们想让一个背景人物在坐标(-300,0)和(300,0)之间不断来回走,我们就需要使用背景控制器来完成这个任务。
首先,要定义步行动画。设定,人物的步行动画为图片10,0到10,3,面朝右方。
错误的原代码:
; Walk right
[Begin Action 10]
10,0,0,0,6
10,1,0,0,6
10,2,0,0,6
10,3,0,0,6
; Walk left
[Begin Action 11]
10,0,0,0,6,H
10,1,0,0,6,H
10,2,0,0,6,H
10,3,0,0,6,H
[示例代码]
;现在,让人物从左墙角边缘地带开始走
[示例代码]
[BGDef]
(...)
[BG Peregrinator(旅行者)]
type = anim
actionno = 10
id = 10
start = -300, 0
delta = 1,1
我们将旅行者的速度定义为2像素每帧数,一个舒适的漫步速度。他所需步行的单程距离为600像素点,走完要300帧数。总计全程,走完要花去600帧数时间。在这个计算的帮助下,合理建立背景控制器:因为整个运动会每600帧数重复,我们可以将整体循环时间设置为600。
错误的原代码:
[BGCtrlDef Peregrinator]
;每600帧数重置整个运动过程
looptime = 600
ctrlID = 10
;在动画帧数为0时,设置速度为往右2像素点每秒
[BGCtrl Walk Right]
type = VelSet
time = 0
x = 2
;在动画帧数为300时,设置速度为往左2像素点每秒
[BGCtrl Walk Left]
type = VelSet
time = 300
x = -2
来自Mike Werewolf的特别提醒:Elecbyte遗漏了一部分代码。就当前来看,这段代码的确能让旅行者从左往右走,然后又走回来,但旅行者的动画并未改变,他永远都面朝右方。因此,在BGCtrl的第二个阶段(向左走),旅行者会玩太空步。要改正这个,我们需要在步行过程中添加一段BGCtrl来改变动画:
修正代码:
[BGCtrl Turn to the Left(转向左边)]
type = Anim
time = 300
value = 11
不过,按照同样的想法思考,套用之前的代码,旅行者的确会在300帧数的时候使用第11组动画,但是当BGCtrlDef重置回循环之初时,背景控制器并没有收到动画更改的信息,因此,在第二轮循环中,仍会沿用第11组动画,旅行者会再次进入太空步状态。我们需要添加一个新的BGCtrl。这个阶段的完整代码应该为:
修正代码:
[BGCtrlDef Peregrinator]
;每600帧数重置整个运动过程
looptime = 600
ctrlID = 10
;在动画帧数为0时,设置速度为往右2像素点每秒
[BGCtrl Walk Right]
type = VelSet
time = 0
x = 2
[BGCtrl Turn to the Right]
type = Anim
time = 0
value = 10
;在动画帧数为300时,设置速度为往左2像素点每秒
[BGCtrl Walk Left]
type = VelSet
time = 300
x = -2
[BGCtrl Turn to the Left]
type = Anim
time = 300
value = 11
恩,就是这样!你可以通过降低旅行者的速度和添加转身动画,让这个步行动画效果更佳。这也会让速度增加控件和动画控件更加细节化。假如你想让旅行者某些时候在一个特定的距离停下,然后反方向行走,你就需要创造更多的速度设定控件和动画控件,让它们在自己的特定时间中循环(让特定的动作在特定时间间隔中重复)。
最后,在Mugen Docs中还有一个错误。他们为该句法设立的例子为:
代码:
[BGCtrl]
type = Enabled
然而,在结尾处多添加的“d”会导致Mugen崩溃。这段代码应该为:
代码:
[BGCtrl]
type = Enable