Project1

标题: 主角移动时同步发出脚步声 [打印本页]

作者: waya    时间: 2008-8-2 06:42
标题: 主角移动时同步发出脚步声
无需用公共事件,转的、看到以前有人求过,如果有人转过无视我吧

转载地址:http://members.jcom.home.ne.jp/cogwheel/script/footstep.txt

  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
复制代码

作者: Ж纯Ж蓝Ж    时间: 2008-8-2 06:44
MS樓主發錯區了.......
作者: lhbadsl    时间: 2008-8-2 09:35
貌视没有作用啊!!!!!!!!!!!怎么用的,我想要啊。。。。
作者: 凌冰    时间: 2008-8-2 09:41
这种帖子一般是地球村的= =
作者: 偶尔杀人越货    时间: 2008-9-12 23:33
不错的小脚本,我只想怨念的说...怎么不是vx的?!




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