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

Project1

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

[已经解决] 请问有没有办法让行走的时候帧数多一点?

 关闭 [复制链接]
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
31 小时
注册时间
2011-4-30
帖子
12
跳转到指定楼层
1
发表于 2011-4-30 15:06:58 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
31 小时
注册时间
2011-4-30
帖子
12
3
 楼主| 发表于 2011-4-30 16:50:03 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
回复 支持 反对

使用道具 举报

Lv2.观梦者

虚構歪曲

梦石
0
星屑
364
在线时间
1198 小时
注册时间
2010-12-18
帖子
3928

贵宾

2
发表于 2011-4-30 16:35:01 | 只看该作者
  1. #==============================================================================
  2. # 移動パターン増加 Ver 1.00
  3. # 配布元・サポートURL
  4. # By COGHWELL
  5. # http://members.jcom.home.ne.jp/cogwheel/
  6. #==============================================================================


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

  13. class Game_Character
  14.   #--------------------------------------------------------------------------
  15.   # ● フレーム更新
  16.   #--------------------------------------------------------------------------
  17.   def update
  18.     # ジャンプ中、移動中、停止中で分岐
  19.     if jumping?
  20.       update_jump
  21.     elsif moving?
  22.       update_move
  23.     else
  24.       update_stop
  25.     end
  26.     # アニメカウントが最大値を超えた場合
  27.     # ※最大値は、基本値 18 から移動速度 * 1 を引いた値
  28.     # ファイル名に[n]が入っている場合、通常の(n-1)/4の速度でパターン更新
  29.     if @character_name[/\[(\d+)\]/]
  30.       @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
  31.       if @anime_count * ($1.to_i - 1) / 4 > 18 - @move_speed * 2
  32.         # 停止時アニメが OFF かつ 停止中の場合
  33.         if not @step_anime and @stop_count > 0
  34.           # パターンをオリジナルに戻す
  35.           @pattern = @original_pattern
  36.         # 停止時アニメが ON または 移動中の場合
  37.         else
  38.           # パターンを更新
  39.           @pattern = @pattern % ($1.to_i - 1) + 1
  40.         end
  41.         # アニメカウントをクリア
  42.         @anime_count = 0
  43.       end
  44.     else
  45.     # 通常キャラのパターン更新処理(デフォルトの処理をコピペしただけ)
  46.       if @anime_count > 18 - @move_speed * 2
  47.         # 停止時アニメが OFF かつ 停止中の場合
  48.         if not @step_anime and @stop_count > 0
  49.           # パターンをオリジナルに戻す
  50.           @pattern = @original_pattern
  51.         # 停止時アニメが ON または 移動中の場合
  52.         else
  53.           # パターンを更新
  54.           @pattern = (@pattern + 1) % 4
  55.         end
  56.         # アニメカウントをクリア
  57.         @anime_count = 0
  58.       end
  59.     end
  60.     # ウェイト中の場合
  61.     if @wait_count > 0
  62.       # ウェイトカウントを減らす
  63.       @wait_count -= 1
  64.       return
  65.     end
  66.     # 移動ルート強制中の場合
  67.     if @move_route_forcing
  68.       # カスタム移動
  69.       move_type_custom
  70.       return
  71.     end
  72.     # イベント実行待機中またはロック状態の場合
  73.     if @starting or lock?
  74.       # 自律移動はしない
  75.       return
  76.     end
  77.     # 停止カウントが一定の値 (移動頻度から算出) を超えた場合
  78.     if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
  79.       # 移動タイプで分岐
  80.       case @move_type
  81.       when 1  # ランダム
  82.         move_type_random
  83.       when 2  # 近づく
  84.         move_type_toward_player
  85.       when 3  # カスタム
  86.         move_type_custom
  87.       end
  88.     end
  89.   end
  90. end

  91. #==============================================================================
  92. # ■ Sprite_Character
  93. #------------------------------------------------------------------------------
  94. #  キャラクター表示用のスプライトです。Game_Character クラスのインスタンスを
  95. # 監視し、スプライトの状態を自動的に変化させます。
  96. #==============================================================================

  97. class Sprite_Character < RPG::Sprite
  98.   #--------------------------------------------------------------------------
  99.   # ● フレーム更新
  100.   #--------------------------------------------------------------------------
  101.   def update
  102.     super
  103.     # タイル ID、ファイル名、色相のどれかが現在のものと異なる場合
  104.     if @tile_id != @character.tile_id or
  105.        @character_name != @character.character_name or
  106.        @character_hue != @character.character_hue
  107.       # タイル ID とファイル名、色相を記憶
  108.       @tile_id = @character.tile_id
  109.       @character_name = @character.character_name
  110.       @character_hue = @character.character_hue
  111.       # タイル ID が有効な値の場合
  112.       if @tile_id >= 384
  113.         self.bitmap = RPG::Cache.tile($game_map.tileset_name,
  114.           @tile_id, @character.character_hue)
  115.         self.src_rect.set(0, 0, 32, 32)
  116.         self.ox = 16
  117.         self.oy = 32
  118.       # タイル ID が無効な値の場合
  119.       else
  120.         self.bitmap = RPG::Cache.character(@character.character_name,
  121.           @character.character_hue)
  122.         # ファイル名に[n]が入っている場合、パターン数を横:n, 縦:4とみなす
  123.         if @character.character_name[/\[(\d+)\]/]
  124.           @cw = bitmap.width / $1.to_i
  125.           @ch = bitmap.height / 4
  126.         # ファイル名に[D]が入っていない場合、通常通り横:4, 縦:4とする
  127.         else
  128.           @cw = bitmap.width / 4
  129.           @ch = bitmap.height / 4
  130.         end
  131.         self.ox = @cw / 2
  132.         self.oy = @ch
  133.       end
  134.     end
  135.     # 可視状態を設定
  136.     self.visible = (not @character.transparent)
  137.     # グラフィックがキャラクターの場合
  138.     if @tile_id == 0
  139.       # 転送元の矩形を設定
  140.       sx = @character.pattern * @cw
  141.       sy = (@character.direction - 2) / 2 * @ch
  142.       self.src_rect.set(sx, sy, @cw, @ch)
  143.     end
  144.     # スプライトの座標を設定
  145.     self.x = @character.screen_x
  146.     self.y = @character.screen_y
  147.     self.z = @character.screen_z(@ch)
  148.     # 不透明度、合成方法、茂み深さを設定
  149.     self.opacity = @character.opacity
  150.     self.blend_type = @character.blend_type
  151.     self.bush_depth = @character.bush_depth
  152.     # アニメーション
  153.     if @character.animation_id != 0
  154.       animation = $data_animations[@character.animation_id]
  155.       animation(animation, true)
  156.       @character.animation_id = 0
  157.     end
  158.   end
  159. end


  160. # ついでにメニュー画面でパターンが多いグラフィックを使用した場合の表記変更

  161. #==============================================================================
  162. # ■ Window_Base
  163. #------------------------------------------------------------------------------
  164. #  ゲーム中のすべてのウィンドウのスーパークラスです。
  165. #==============================================================================

  166. class Window_Base < Window
  167.   #--------------------------------------------------------------------------
  168.   # ● グラフィックの描画
  169.   #     actor : アクター
  170.   #     x     : 描画先 X 座標
  171.   #     y     : 描画先 Y 座標
  172.   #--------------------------------------------------------------------------
  173.   def draw_actor_graphic(actor, x, y)
  174.     bitmap = RPG::Cache.character(actor.character_name, actor.character_hue)
  175.     if actor.character_name[/\[(\d+)\]/]
  176.       cw = bitmap.width / $1.to_i
  177.       ch = bitmap.height / 4
  178.     else
  179.       cw = bitmap.width / 4
  180.       ch = bitmap.height / 4
  181.     end
  182.     src_rect = Rect.new(0, 0, cw, ch)
  183.     self.contents.blt(x - cw / 2, y - ch, bitmap, src_rect)
  184.   end
  185. end

  186. #==============================================================================
  187. # ■ Window_SaveFile
  188. #------------------------------------------------------------------------------
  189. #  セーブ画面およびロード画面で表示する、セーブファイルのウィンドウです。
  190. #==============================================================================

  191. class Window_SaveFile < Window_Base
  192.   #--------------------------------------------------------------------------
  193.   # ● リフレッシュ
  194.   #--------------------------------------------------------------------------
  195.   def refresh
  196.     self.contents.clear
  197.     # ファイル番号を描画
  198.     self.contents.font.color = normal_color
  199.     name = "File #{@file_index + 1}"
  200.     self.contents.draw_text(4, 0, 600, 32, name)
  201.     @name_width = contents.text_size(name).width
  202.     # セーブファイルが存在する場合
  203.     if @file_exist
  204.       # キャラクターを描画
  205.       for i in [email protected]
  206.         bitmap = RPG::Cache.character(@characters[i][0], @characters[i][1])
  207.         if @characters[i][0][/\[(\d+)\]/]
  208.           cw = bitmap.width / $1.to_i
  209.           ch = bitmap.height / 4
  210.         else
  211.           cw = bitmap.width / 4
  212.           ch = bitmap.height / 4
  213.         end
  214.         src_rect = Rect.new(0, 0, cw, ch)
  215.         x = 300 - @characters.size * 32 + i * 64 - cw / 2
  216.         self.contents.blt(x, 68 - ch, bitmap, src_rect)
  217.       end
  218.       # プレイ時間を描画
  219.       hour = @total_sec / 60 / 60
  220.       min = @total_sec / 60 % 60
  221.       sec = @total_sec % 60
  222.       time_string = sprintf("%02d:%02d:%02d", hour, min, sec)
  223.       self.contents.font.color = normal_color
  224.       self.contents.draw_text(4, 8, 600, 32, time_string, 2)
  225.       # タイムスタンプを描画
  226.       self.contents.font.color = normal_color
  227.       time_string = @time_stamp.strftime("%Y/%m/%d %H:%M")
  228.       self.contents.draw_text(4, 40, 600, 32, time_string, 2)
  229.     end
  230.   end
  231. end

  232. #==============================================================================
  233. # ■ Game_Player
  234. #------------------------------------------------------------------------------
  235. #  プレイヤーを扱うクラスです。イベントの起動判定や、マップのスクロールなどの
  236. # 機能を持っています。このクラスのインスタンスは $game_player で参照されます。
  237. #==============================================================================

  238. class Game_Player < Game_Character
  239.   #--------------------------------------------------------------------------
  240.   # ● アニメーションアップデート
  241.   #--------------------------------------------------------------------------
  242.   def anime_update
  243.     # アニメカウントが最大値を超えた場合
  244.     # ※最大値は、基本値 18 から移動速度 * 1 を引いた値
  245.     # ファイル名に[n]が入っている場合、通常の(n-1)/4の速度でパターン更新
  246.     if @character_name[/\[(\d+)\]/]
  247.       @anime_count = 20 if @anime_count > 0 and @pattern == @original_pattern
  248.       if @anime_count * ($1.to_i - 1) / 4 > 18 - @move_speed * 2
  249.         # 停止時アニメが OFF かつ 停止中の場合
  250.         if not @step_anime and @stop_count > 0
  251.           # パターンをオリジナルに戻す
  252.           @pattern = @original_pattern
  253.         # 停止時アニメが ON または 移動中の場合
  254.         else
  255.           # パターンを更新
  256.           @pattern = @pattern % ($1.to_i - 1) + 1
  257.         end
  258.         # アニメカウントをクリア
  259.         @anime_count = 0
  260.       end
  261.     else
  262.     # 通常キャラのパターン更新処理(デフォルトの処理をコピペしただけ)
  263.       if @anime_count > 18 - @move_speed * 2
  264.         # 停止時アニメが OFF かつ 停止中の場合
  265.         if not @step_anime and @stop_count > 0
  266.           # パターンをオリジナルに戻す
  267.           @pattern = @original_pattern
  268.         # 停止時アニメが ON または 移動中の場合
  269.         else
  270.           # パターンを更新
  271.           @pattern = (@pattern + 1) % 4
  272.         end
  273.         # アニメカウントをクリア
  274.         @anime_count = 0
  275.       end
  276.     end
  277.   end
  278. end
复制代码


通过文件名来决定帧数,例如。
actor1[8].png
那么这个行走图就是八帧了……

评分

参与人数 1星屑 +200 梦石 +2 收起 理由
「旅」 + 200 + 2

查看全部评分

回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-29 13:51

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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