|
也许大多数人都会对音效不屑以顾,认为使用音效很简单,在声音管理器里应用,然后再在触发器里调用就行了,如果你只需要在一个时间内播放一个这样的音效那么声音管理器+触发器完全可以满足你的需要,而如果需要叠音效果的话,光这样可不行。
首先你必须用CreateSound这函数:
[codes=jass] native CreateSound takes string fileName, boolean looping, boolean is3D, boolean stopwhenoutofrange, integer fadeInRate, integer fadeOutRate, string eaxSetting returns sound[/codes] (这是我见过最长的函数了。。)
代表:先是文件名,是否循环,是否是3d,是否超出范围就听不见了,淡入率,淡出率,通道?(其实你可以参考声音管理器,声音管理器的选项比这多,它的功能比这函数强大,就像在双击地图一个单位时有营地范围,掉落物品等选项一样。。虽然是CreateUnit创造了他,但地图的设置还有辅助功能)
原理:其实我们在声音管理器中应用一个声音就是使用了PlaySound(见下)这个函数,就像在地图上放置一个单位,而如果是单位的话你会很清楚他被预设的单一性(现在已经很少有地图不会后来增加兵了。。兵营里造出来也等于后加的了),而声音被预设了以后再播放的时间内是无法再次被播放的(就像你放个步兵不可能让他同时攻击2个目标),所以你需要后来创建声音
[codes=jass] function PlaySound takes string soundName returns nothing
//声音管理器中应用声音的函数
local sound soundHandle = CreateSound(soundName, false, false, true, 12700, 12700, "")
call StartSound(soundHandle)
call KillSoundWhenDone(soundHandle)
endfunction [/codes]
那么究竟我们应该如何运用呢?下面举个3D音效的例子。。
[codes=jass] function TmdPlaySound takes real X,real Y,string fileName returns nothing()
set bj_lastPlayedSound = CreateSound(fileName, false, true, true, 12700, 12700, "")
call SetSoundPosition (bj_lastPlayedSound,X, Y, 0)
call SetSoundVolume(bj_lastPlayedSound,127)
call StartSound(bj_lastPlayedSound)
call KillSoundWhenDone(bj_lastPlayedSound)
endfunction [/codes]
建立完这个函数后只需要call TmdPlaySound( X,Y,fileName)就能使用一个可以如同于局部变量的3D音效了
fileName这个就如同你创建特效路径一样需要完整的比如:
[codes=jass] call TmdPlaySound(GetLocation X(p),GetLocationY(p),"Abilities\\Weapons\\Arrow\\ArrowAttack1.wav") [/codes]
如果你事先就知道那你就无视这贴吧,但如果你不知道.....我也不能逼你看....
本人第一次写教程。。好有成就感。。有什么不对还请指出,另外怎么用JASS的格式。。
恩。。讲完了 |
评分
-
查看全部评分
|