Project1

标题: 问一个关于脚步声的问题。 [打印本页]

作者: 伤墨    时间: 2009-7-25 12:29
标题: 问一个关于脚步声的问题。
我用的使这个脚步声的脚本 但是想让他的频率变慢 就是走两步响一下脚步声 下面这个是走一步响一下 要如何修改呢?
  1. # 足音 Ver1.00
  2. # 配布元・サポートURL
  3. # http://members.jcom.home.ne.jp/cogwheel/

  4. #==============================================================================
  5. # ■ Game_Character (分割定義 2)
  6. #------------------------------------------------------------------------------
  7. #  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
  8. # クラスのスーパークラスとして使用されます。
  9. #==============================================================================

  10. class Game_Character
  11.   #--------------------------------------------------------------------------
  12.   # ● 足音
  13.   #--------------------------------------------------------------------------
  14.   def step_sound
  15.     if self == $game_player
  16.       vol = 75
  17.     else
  18.       vol = [75 - Math.sqrt(($game_player.real_x - self.real_x) ** 2 +
  19.             ($game_player.real_y - self.real_y) ** 2) / 64, 0].max
  20.     end
  21.     if @character_name[/\[(\d+)\]/]
  22.       pattern1 = ($1 - 1) / 4
  23.       pattern2 = ($1 - 1) * 3 / 4
  24.     else
  25.       pattern1 = 1
  26.       pattern2 = 3
  27.     end
  28.     if @pattern == pattern1
  29.       case terrain_tag
  30.       when 0 # 床
  31.         Audio.se_play("Audio/SE/016-Jump02", vol, 120)
  32.       end
  33.     elsif @pattern == pattern2
  34.       case terrain_tag
  35.       when 0 # 床
  36.         Audio.se_play("Audio/SE/016-Jump02", vol, 100)
  37.       end
  38.     end
  39.   end
  40.   #--------------------------------------------------------------------------
  41.   # ● フレーム更新
  42.   #--------------------------------------------------------------------------
  43.   def update
  44.     # ジャンプ中、移動中、停止中で分岐
  45.     if jumping?
  46.       update_jump
  47.     elsif moving?
  48.       update_move
  49.     else
  50.       update_stop
  51.     end
  52.     # アニメカウントが最大値を超えた場合
  53.     # ※最大値は、基本値 18 から移動速度 * 1 を引いた値
  54.     # ファイル名に[n]が入っている場合、通常の(n-1)/4の速度でパターン更新
  55.     if @character_name[/\[(\d+)\]/]
  56.       @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
  57.       if @anime_count * ($1.to_i - 1) / 4 > 18 - @move_speed * 2
  58.         # 停止時アニメが OFF かつ 停止中の場合
  59.         if not @step_anime and @stop_count > 0
  60.           # パターンをオリジナルに戻す
  61.           @pattern = @original_pattern
  62.         # 停止時アニメが ON または 移動中の場合
  63.         else
  64.           # パターンを更新
  65.           @pattern = @pattern % ($1.to_i - 1) + 1
  66.           # 足音を鳴らす
  67.           if self.is_a?(Game_Player) or (@name[/\\[Ff]/] and
  68.               @stop_count == 0 and @locked == false and @character_name != "")
  69.             step_sound
  70.           end
  71.         end
  72.         # アニメカウントをクリア
  73.         @anime_count = 0
  74.       end
  75.     else
  76.     # 通常キャラのパターン更新処理(デフォルトの処理をコピペしただけ)
  77.       if @anime_count > 18 - @move_speed * 2
  78.         # 停止時アニメが OFF かつ 停止中の場合
  79.         if not @step_anime and @stop_count > 0
  80.           # パターンをオリジナルに戻す
  81.           @pattern = @original_pattern
  82.         # 停止時アニメが ON または 移動中の場合
  83.         else
  84.           # パターンを更新
  85.           @pattern = (@pattern + 1) % 4
  86.           if self.is_a?(Game_Player) or (@name[/\\[Ff]/] and
  87.               @stop_count == 0 and @locked == false and @character_name != "")
  88.             step_sound
  89.           end
  90.         end
  91.         # アニメカウントをクリア
  92.         @anime_count = 0
  93.       end
  94.     end
  95.     # ウェイト中の場合
  96.     if @wait_count > 0
  97.       # ウェイトカウントを減らす
  98.       @wait_count -= 1
  99.       return
  100.     end
  101.     # 移動ルート強制中の場合
  102.     if @move_route_forcing
  103.       # カスタム移動
  104.       move_type_custom
  105.       return
  106.     end
  107.     # イベント実行待機中またはロック状態の場合
  108.     if @starting or lock?
  109.       # 自律移動はしない
  110.       return
  111.     end
  112.     # 停止カウントが一定の値 (移動頻度から算出) を超えた場合
  113.     if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  114.       # 移動タイプで分岐
  115.       case @move_type
  116.       when 1  # ランダム
  117.         move_type_random
  118.       when 2  # 近づく
  119.         move_type_toward_player
  120.       when 3  # カスタム
  121.         move_type_custom
  122.       end
  123.     end
  124.   end
  125. end

  126. #==============================================================================
  127. # ■ Game_Event
  128. #------------------------------------------------------------------------------
  129. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  130. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  131. #==============================================================================

  132. class Game_Event < Game_Character
  133.   #--------------------------------------------------------------------------
  134.   # ● 公開インスタンス変数
  135.   #--------------------------------------------------------------------------
  136.   attr_reader   :name                     # 名前
  137.   #--------------------------------------------------------------------------
  138.   # ● オブジェクト初期化
  139.   #     map_id : マップ ID
  140.   #     event  : イベント (RPG::Event)
  141.   #--------------------------------------------------------------------------
  142.   alias :initialize_spirit :initialize
  143.   def initialize(map_id, event)
  144.     @name = event.name
  145.     initialize_spirit(map_id, event)
  146.   end
  147. end
复制代码

作者: IamI    时间: 2009-7-25 12:52
这个试试看,随手写的,不保证质量……
  1. # 足音 Ver1.00
  2. # 配布元・サポートURL
  3. # http://members.jcom.home.ne.jp/cogwheel/

  4. #==============================================================================
  5. # ■ Game_Character (分割定義 2)
  6. #------------------------------------------------------------------------------
  7. #  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
  8. # クラスのスーパークラスとして使用されます。
  9. #==============================================================================

  10. class Game_Character
  11.   #--------------------------------------------------------------------------
  12.   # ● 足音
  13.   #--------------------------------------------------------------------------
  14.   def step_sound
  15.     @count_orz = 0 if @count_orz == nil
  16.     @count_orz += 1
  17.     @count_orz = 0 if @count_orz == 2
  18.     return if @count_orz == 0
  19.     if self == $game_player
  20.       vol = 75
  21.     else
  22.       vol = [75 - Math.sqrt(($game_player.real_x - self.real_x) ** 2 +
  23.             ($game_player.real_y - self.real_y) ** 2) / 64, 0].max
  24.     end
  25.     if @character_name[/\[(\d+)\]/]
  26.       pattern1 = ($1 - 1) / 4
  27.       pattern2 = ($1 - 1) * 3 / 4
  28.     else
  29.       pattern1 = 1
  30.       pattern2 = 3
  31.     end
  32.     if @pattern == pattern1
  33.       case terrain_tag
  34.       when 0 # 床
  35.         Audio.se_play("Audio/SE/016-Jump02", vol, 120)
  36.       end
  37.     elsif @pattern == pattern2
  38.       case terrain_tag
  39.       when 0 # 床
  40.         Audio.se_play("Audio/SE/016-Jump02", vol, 100)
  41.       end
  42.     end
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● フレーム更新
  46.   #--------------------------------------------------------------------------
  47.   def update
  48.     # ジャンプ中、移動中、停止中で分岐
  49.     if jumping?
  50.       update_jump
  51.     elsif moving?
  52.       update_move
  53.     else
  54.       update_stop
  55.     end
  56.     # アニメカウントが最大値を超えた場合
  57.     # ※最大値は、基本値 18 から移動速度 * 1 を引いた値
  58.     # ファイル名に[n]が入っている場合、通常の(n-1)/4の速度でパターン更新
  59.     if @character_name[/\[(\d+)\]/]
  60.       @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
  61.       if @anime_count * ($1.to_i - 1) / 4 > 18 - @move_speed * 2
  62.         # 停止時アニメが OFF かつ 停止中の場合
  63.         if not @step_anime and @stop_count > 0
  64.           # パターンをオリジナルに戻す
  65.           @pattern = @original_pattern
  66.         # 停止時アニメが ON または 移動中の場合
  67.         else
  68.           # パターンを更新
  69.           @pattern = @pattern % ($1.to_i - 1) + 1
  70.           # 足音を鳴らす
  71.           if self.is_a?(Game_Player) or (@name[/\\[Ff]/] and
  72.               @stop_count == 0 and @locked == false and @character_name != "")
  73.             step_sound
  74.           end
  75.         end
  76.         # アニメカウントをクリア
  77.         @anime_count = 0
  78.       end
  79.     else
  80.     # 通常キャラのパターン更新処理(デフォルトの処理をコピペしただけ)
  81.       if @anime_count > 18 - @move_speed * 2
  82.         # 停止時アニメが OFF かつ 停止中の場合
  83.         if not @step_anime and @stop_count > 0
  84.           # パターンをオリジナルに戻す
  85.           @pattern = @original_pattern
  86.         # 停止時アニメが ON または 移動中の場合
  87.         else
  88.           # パターンを更新
  89.           @pattern = (@pattern + 1) % 4
  90.           if self.is_a?(Game_Player) or (@name[/\\[Ff]/] and
  91.               @stop_count == 0 and @locked == false and @character_name != "")
  92.             step_sound
  93.           end
  94.         end
  95.         # アニメカウントをクリア
  96.         @anime_count = 0
  97.       end
  98.     end
  99.     # ウェイト中の場合
  100.     if @wait_count > 0
  101.       # ウェイトカウントを減らす
  102.       @wait_count -= 1
  103.       return
  104.     end
  105.     # 移動ルート強制中の場合
  106.     if @move_route_forcing
  107.       # カスタム移動
  108.       move_type_custom
  109.       return
  110.     end
  111.     # イベント実行待機中またはロック状態の場合
  112.     if @starting or lock?
  113.       # 自律移動はしない
  114.       return
  115.     end
  116.     # 停止カウントが一定の値 (移動頻度から算出) を超えた場合
  117.     if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  118.       # 移動タイプで分岐
  119.       case @move_type
  120.       when 1  # ランダム
  121.         move_type_random
  122.       when 2  # 近づく
  123.         move_type_toward_player
  124.       when 3  # カスタム
  125.         move_type_custom
  126.       end
  127.     end
  128.   end
  129. end

  130. #==============================================================================
  131. # ■ Game_Event
  132. #------------------------------------------------------------------------------
  133. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  134. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  135. #==============================================================================

  136. class Game_Event < Game_Character
  137.   #--------------------------------------------------------------------------
  138.   # ● 公開インスタンス変数
  139.   #--------------------------------------------------------------------------
  140.   attr_reader   :name                     # 名前
  141.   #--------------------------------------------------------------------------
  142.   # ● オブジェクト初期化
  143.   #     map_id : マップ ID
  144.   #     event  : イベント (RPG::Event)
  145.   #--------------------------------------------------------------------------
  146.   alias :initialize_spirit :initialize
  147.   def initialize(map_id, event)
  148.     @name = event.name
  149.     initialize_spirit(map_id, event)
  150.   end
  151. end
复制代码

作者: fofolee    时间: 2009-7-25 19:45
最简单的方法,在声效上改动,把你的SE时间加长,即一半时间是脚步声,一班时间空白,即无声,等同于两步一声
作者: 伤墨    时间: 2009-7-26 07:56
都不行呢。
不过还是谢谢各位朋友了。
作者: 宇文暮    时间: 2009-7-29 15:21
提示: 作者被禁止或删除 内容自动屏蔽
作者: 玄月    时间: 2009-7-29 15:42
收工 - - II你看看,很简单的东西 = =
  1. # 足音 Ver1.00
  2. # 配布元・サポートURL
  3. # http://members.jcom.home.ne.jp/cogwheel/

  4. #==============================================================================
  5. # ■ Game_Character (分割定義 2)
  6. #------------------------------------------------------------------------------
  7. #  キャラクターを扱うクラスです。このクラスは Game_Player クラスと Game_Event
  8. # クラスのスーパークラスとして使用されます。
  9. #==============================================================================

  10. class Game_Character
  11.   #--------------------------------------------------------------------------
  12.   # ● 足音
  13.   #--------------------------------------------------------------------------
  14.   def step_sound
  15.     @count_orz = 0 if @count_orz == nil
  16.     @count_orz += 1
  17.     @count_orz = 0 if @count_orz == 2
  18.     return if @count_orz == 0
  19.     if self == $game_player
  20.       vol = 75
  21.     else
  22.       vol = [75 - Math.sqrt(($game_player.real_x - self.real_x) ** 2 +
  23.             ($game_player.real_y - self.real_y) ** 2) / 64, 0].max
  24.     end
  25.     if @character_name[/\[(\d+)\]/]
  26.       pattern1 = ($1 - 1) / 4
  27.       pattern2 = ($1 - 1) * 3 / 4
  28.     else
  29.       pattern1 = 1
  30.       pattern2 = 3
  31.     end
  32.     if @pattern == pattern1
  33.       case terrain_tag
  34.       when 0 # 床
  35.         Audio.se_play("Audio/SE/016-Jump02", vol, 120)
  36.       end
  37.     elsif @pattern == pattern2
  38.       case terrain_tag
  39.       when 0 # 床
  40.         #Audio.se_play("Audio/SE/016-Jump02", vol, 100)
  41.       end
  42.     end
  43.   end
  44.   #--------------------------------------------------------------------------
  45.   # ● フレーム更新
  46.   #--------------------------------------------------------------------------
  47.   def update
  48.     # ジャンプ中、移動中、停止中で分岐
  49.     if jumping?
  50.       update_jump
  51.     elsif moving?
  52.       update_move
  53.     else
  54.       update_stop
  55.     end
  56.     # アニメカウントが最大値を超えた場合
  57.     # ※最大値は、基本値 18 から移動速度 * 1 を引いた値
  58.     # ファイル名に[n]が入っている場合、通常の(n-1)/4の速度でパターン更新
  59.     if @character_name[/\[(\d+)\]/]
  60.       @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
  61.       if @anime_count * ($1.to_i - 1) / 4 > 18 - @move_speed * 2
  62.         # 停止時アニメが OFF かつ 停止中の場合
  63.         if not @step_anime and @stop_count > 0
  64.           # パターンをオリジナルに戻す
  65.           @pattern = @original_pattern
  66.         # 停止時アニメが ON または 移動中の場合
  67.         else
  68.           # パターンを更新
  69.           @pattern = @pattern % ($1.to_i - 1) + 1
  70.           # 足音を鳴らす
  71.           if self.is_a?(Game_Player) or (@name[/\\[Ff]/] and
  72.               @stop_count == 0 and @locked == false and @character_name != "")
  73.             step_sound
  74.           end
  75.         end
  76.         # アニメカウントをクリア
  77.         @anime_count = 0
  78.       end
  79.     else
  80.     # 通常キャラのパターン更新処理(デフォルトの処理をコピペしただけ)
  81.       if @anime_count > 18 - @move_speed * 2
  82.         # 停止時アニメが OFF かつ 停止中の場合
  83.         if not @step_anime and @stop_count > 0
  84.           # パターンをオリジナルに戻す
  85.           @pattern = @original_pattern
  86.         # 停止時アニメが ON または 移動中の場合
  87.         else
  88.           # パターンを更新
  89.           @pattern = (@pattern + 1) % 4
  90.           if self.is_a?(Game_Player) or (@name[/\\[Ff]/] and
  91.               @stop_count == 0 and @locked == false and @character_name != "")
  92.             step_sound
  93.           end
  94.         end
  95.         # アニメカウントをクリア
  96.         @anime_count = 0
  97.       end
  98.     end
  99.     # ウェイト中の場合
  100.     if @wait_count > 0
  101.       # ウェイトカウントを減らす
  102.       @wait_count -= 1
  103.       return
  104.     end
  105.     # 移動ルート強制中の場合
  106.     if @move_route_forcing
  107.       # カスタム移動
  108.       move_type_custom
  109.       return
  110.     end
  111.     # イベント実行待機中またはロック状態の場合
  112.     if @starting or lock?
  113.       # 自律移動はしない
  114.       return
  115.     end
  116.     # 停止カウントが一定の値 (移動頻度から算出) を超えた場合
  117.     if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  118.       # 移動タイプで分岐
  119.       case @move_type
  120.       when 1  # ランダム
  121.         move_type_random
  122.       when 2  # 近づく
  123.         move_type_toward_player
  124.       when 3  # カスタム
  125.         move_type_custom
  126.       end
  127.     end
  128.   end
  129. end

  130. #==============================================================================
  131. # ■ Game_Event
  132. #------------------------------------------------------------------------------
  133. #  イベントを扱うクラスです。条件判定によるイベントページ切り替えや、並列処理
  134. # イベント実行などの機能を持っており、Game_Map クラスの内部で使用されます。
  135. #==============================================================================

  136. class Game_Event < Game_Character
  137.   #--------------------------------------------------------------------------
  138.   # ● 公開インスタンス変数
  139.   #--------------------------------------------------------------------------
  140.   attr_reader   :name                     # 名前
  141.   #--------------------------------------------------------------------------
  142.   # ● オブジェクト初期化
  143.   #     map_id : マップ ID
  144.   #     event  : イベント (RPG::Event)
  145.   #--------------------------------------------------------------------------
  146.   alias :initialize_spirit :initialize
  147.   def initialize(map_id, event)
  148.     @name = event.name
  149.     initialize_spirit(map_id, event)
  150.   end
  151. end
复制代码





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1