设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 7450|回复: 8
打印 上一主题 下一主题

[RMVA发布] (小题大做系列)Ryusa 的脚步声系统 v1.00a

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
248 小时
注册时间
2010-8-22
帖子
127
跳转到指定楼层
1
发表于 2014-11-7 13:03:07 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
本帖最后由 YamazakiRyusa 于 2014-11-7 13:03 编辑

简述
本脚本还原了角色行走时的脚步声。
版本 1.00 Alpha

特性
实现了不同的地图标识响应不同的脚步声
同类脚步声的随机化

计划改进
不同护甲类型(轻、重、魔法)反馈不同脚步声
层叠元件的脚步声区分(通过判断方向)
若干 BUG 修复

需求
若干脚步声文件(范例中已经提供,故建议下载范例以获得声音素材)

使用方法
Step 1:下载 RSP-FSE_RequiredSE 音效文件包,解压到您的工程 Audio\SE 文件夹内



Step 2:复制脚本粘贴到“插件脚本”之后



Step 3:游戏中开启一号开关,以启用脚步声



Step 4:Have Fun!

注释
——地形标识对应的声音类型

0 - 无声
1 - 草地
2 - 沙地
3 - 雪地
4 - 木头
5 - 水·浅滩
6 - 石头
7 - 金属

——我想换个启用的开关
脚本的 84 行 $game_switches[1] 更改为 $game_switches[#你想要的开关编号]

——我想更换声音素材
两个方法,其一是文件名不变替换掉音频文件;其二也可以更改 Play SE 里面的判断部分
比如草地的脚步声素材按这个文件名替换掉就可以:
fst_grass_light_walk_00x.wav

——其他废话
@amount_of_xxx 是拿给随机数计算的某一类声音(比如草地脚步声)的数量,如果能直接通过文件数量判断更好,未来我也打算把脚步声素材按类型分到不同文件夹,然后 SE\Grass 下面是 001.wav 002.wav…,这样的话直接用代码算出文件数量更方便了。

BUGs
跑动时脚步声过于频繁
脚步声仍然有问题——仔细听了老滚里面的脚步声,其实是按顺序播放音频文件而不是随机的,如果连续三次都随到 1 不死板才怪,以后改进……

脚本

RUBY 代码复制
  1. #==============================================================================
  2. # ■ Ryusa FootstepSE
  3. #------------------------------------------------------------------------------
  4. #   脚步声系统 v1.00 by Ryusa - Responced Footstep Sound Playback System
  5. #    ·实现了不同的地图标识响应不同的脚步声 - Multi-terrain ID with different sounds
  6. #    ·同类脚步声随机化 - Randomized sounds in every terrain type to make it more immersive!
  7. #    未来计划改进: - Future update plant
  8. #    ·不同护甲类型(轻、重、魔法)反馈不同脚步声 - Playing back with different armor type: Light, Heavy and Magic
  9. #    ·层叠元件的脚步声区分(通过判断方向)
  10. #------------------------------------------------------------------------------
  11. #    素材来源申明 - WAV Resources Announcement
  12. #    整合自《上古卷轴Ⅴ:天际》的 "IMMERSIVE SOUNDS - COMPENDIUM" MOD 资源包 by lazygecko
  13. #    原素材(脚步声部分)来自 freesound.org 的如下贡献者:
  14. #    ABouch, Halleck, DasDeer, Corsica-S, ddunkley, nickb1608, mallement,
  15. #    Vosvoy, RutgerMuller, jwb4, cheeseheadburger, martinimeniscus
  16. #==============================================================================
  17.  
  18. # Requirements
  19. module RYUSA
  20.   FootstepSE_Version = "1.00 Alpha"
  21. end
  22.  
  23. # Functions
  24. class FootstepSE
  25.   include RYUSA
  26.   #--------------------------------------------------------------------------
  27.   # ● Initialize
  28.   #--------------------------------------------------------------------------
  29.   def initialize
  30.     @enable_debug    = true
  31.     @volum           = 65 # Footstep Volum
  32.     @amount_of_grass = 6  # 1 - Sounds Amount of Grass
  33.     @amount_of_sand  = 6  # 2 - Sounds Amount of Sand
  34.     @amount_of_snow  = 6  # 3 - Sounds Amount of Snow
  35.     @amount_of_wood  = 6  # 4 - Sounds Amount of Wood
  36.     @amount_of_water = 3  # 5 - Sounds Amount of Water
  37.     @amount_of_stone = 3  # 6 - Sounds Amount of Stone
  38.     @amount_of_metal = 6  # 7 - Sounds Amount of Metal
  39.     @sets = [1, @amount_of_grass, @amount_of_sand, @amount_of_snow, @amount_of_wood, @amount_of_water, @amount_of_stone, @amount_of_metal]
  40.     @terrain_mark   = 0
  41.   end
  42.   #--------------------------------------------------------------------------
  43.   # ● Pre-process
  44.   #--------------------------------------------------------------------------
  45.   def play
  46.     process if enable? && $game_player.moving?
  47.     debug if @enable_debug
  48.   end
  49.   #--------------------------------------------------------------------------
  50.   # ● Process
  51.   #--------------------------------------------------------------------------
  52.   def process
  53.     play_se
  54.   end
  55.   #--------------------------------------------------------------------------
  56.   # ● Play SE
  57.   #--------------------------------------------------------------------------
  58.   def play_se
  59.     @terrain_mark = get_terrain_mark
  60.     @dice = get_dice
  61.     case @terrain_mark
  62.       when 0 # No Sound
  63.       when 1 # Glass
  64.         Audio.se_play("Audio/SE/fst_grass_light_walk_00" + @dice.to_s,@volum)
  65.       when 2 # Sand
  66.         Audio.se_play("Audio/SE/fst_sand_light_walk_00" + @dice.to_s,@volum)
  67.       when 3 # snow
  68.         Audio.se_play("Audio/SE/fst_snow_light_walk_00" + @dice.to_s,@volum)
  69.       when 4 # wood
  70.         Audio.se_play("Audio/SE/fst_wood_light_walk_00" + @dice.to_s,@volum)
  71.       when 5 # water
  72.         Audio.se_play("Audio/SE/fst_water_heavy_run_00" + @dice.to_s,@volum)
  73.       when 6 # stone
  74.         Audio.se_play("Audio/SE/fst_stone_light_walk_00" + @dice.to_s,@volum)
  75.       when 7 # metal
  76.         Audio.se_play("Audio/SE/fst_metal_light_walk_00" + @dice.to_s,@volum)
  77.       else return 0
  78.     end
  79.   end
  80.   #--------------------------------------------------------------------------
  81.   # ● Get Flag
  82.   #--------------------------------------------------------------------------
  83.   def enable?
  84.     return $game_switches[1]
  85.   end
  86.   #--------------------------------------------------------------------------
  87.   # ● Get Terrain Mark
  88.   #--------------------------------------------------------------------------
  89.   def get_terrain_mark
  90.     return $game_map.terrain_tag($game_player.x, $game_player.y)
  91.   end
  92.   #--------------------------------------------------------------------------
  93.   # ● Get Dice
  94.   #--------------------------------------------------------------------------
  95.   def get_dice
  96.     if enable?
  97.       return rand(@sets[@terrain_mark] - 1) + 1 # Not include zero!
  98.     else
  99.       return 0
  100.     end
  101.   end
  102.   #--------------------------------------------------------------------------
  103.   # ● Debug
  104.   #--------------------------------------------------------------------------
  105.   def debug
  106.     puts "-----------------------"
  107.     puts "Footstep SE " + (enable? ? "Enable" : "Suspended")
  108.     puts ($game_player.moving? ? "Moving..." : "Standby")
  109.     puts "Player are " + ($game_player.dash? ? "dashing" : ($game_player.moving? ? "walking" : "standing"))
  110.     puts "terrain Mark: " + @terrain_mark.to_s
  111.     puts "Random Sound Index: " + get_dice.to_s
  112.   end
  113. end
  114.  
  115. #==============================================================================
  116. # ■ Game_Player
  117. #------------------------------------------------------------------------------
  118. #    Overwrite
  119. #==============================================================================
  120. class Game_Player
  121.   alias FSSE_move_by_input move_by_input
  122.   def move_by_input
  123.     return if !movable? || $game_map.interpreter.running?
  124.     move_straight(Input.dir4) if Input.dir4 > 0
  125.     footstepse = FootstepSE.new
  126.     footstepse.play
  127.   end
  128. end


下载
范例工程音频文件包

Lv2.观梦者

故九江太守

梦石
0
星屑
612
在线时间
2167 小时
注册时间
2012-12-5
帖子
4464
2
发表于 2014-11-7 13:34:08 | 只看该作者
来个XP版本的
回复 支持 反对

使用道具 举报

Lv4.逐梦者 (版主)

无限の剣制

梦石
0
星屑
10074
在线时间
5020 小时
注册时间
2013-2-28
帖子
5030

开拓者贵宾

3
发表于 2014-11-7 14:25:26 | 只看该作者
我也做过一个脚步声的脚本。
https://rpg.blue/thread-371589-1-1.html
喵呜=0大大也有一个足音
https://rpg.blue/home.php?mod=sp ... o=blog&id=13587

点评

高下立判了…… 赶紧抱回去学习2333  发表于 2014-11-9 11:42
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
380
在线时间
602 小时
注册时间
2014-5-8
帖子
699
4
发表于 2014-11-7 16:56:26 | 只看该作者
求XP版本!!!!!
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

5
发表于 2014-11-8 08:46:32 | 只看该作者
地形标识对应的声音类型刚好我的地形标志在其他地方用掉了···能换个别的方式吗?
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
248 小时
注册时间
2010-8-22
帖子
127
6
 楼主| 发表于 2014-11-9 11:48:25 | 只看该作者
chd114 发表于 2014-11-8 08:46
地形标识对应的声音类型刚好我的地形标志在其他地方用掉了···能换个别的方式吗? ...

如果区域 ID 没被占用就暂时先把
  1.   #--------------------------------------------------------------------------
  2.   # ● Get Terrain Mark
  3.   #--------------------------------------------------------------------------
  4.   def get_terrain_mark
  5.     return $game_map.terrain_tag($game_player.x, $game_player.y)
  6.   end
复制代码
替换成
  1.   get_terrain_mark
  2.     return $game_map.region_id($game_player.x, $game_player.y)
  3.   end
复制代码
未来再弄个判断让用于选择用地形标识还是区域 ID 好了

点评

Re: VIPArcher 我秀逗了,多谢指教2333  发表于 2014-11-11 17:27
写繁了,$game_player.terrain_tag 就可以了$game_player.region_id也一样  发表于 2014-11-9 12:24
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9280
在线时间
2504 小时
注册时间
2011-5-20
帖子
15389

开拓者

7
发表于 2014-11-9 12:03:22 | 只看该作者
YamazakiRyusa 发表于 2014-11-8 18:48
如果区域 ID 没被占用就暂时先把替换成未来再弄个判断让用于选择用地形标识还是区域 ID 好了 ...

话说我现在是混用工程,能不能直接用VX的区域处理来弄?

点评

试什么···  发表于 2014-11-11 22:15
VX没用过,你可以试试  发表于 2014-11-11 17:27
[img]http://service.t.sina.com.cn/widget/qmd/5339802982/c02e16bd/7.png
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
657
在线时间
59 小时
注册时间
2020-2-4
帖子
27
8
发表于 2020-2-7 17:57:32 | 只看该作者
游戏中怎么开启1开关啊.....
喜欢做游戏!
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
657
在线时间
59 小时
注册时间
2020-2-4
帖子
27
9
发表于 2020-2-22 11:55:56 | 只看该作者
用事件开启了1开关 完全没用 怎么回事
喜欢做游戏!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-21 23:47

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表