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

Project1

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

[已经过期] 如何添加人物行走图的帧数

[复制链接]

Lv1.梦旅人

梦石
0
星屑
190
在线时间
6 小时
注册时间
2011-3-20
帖子
4
跳转到指定楼层
1
发表于 2012-4-3 18:22:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想把人物行走图从四帧改到“N“帧   效果就是人物行走 能看见衣服随风偏舞  

应该添加什么脚本?

求高手帮助呀  就这问题让我的制作很纠结   如果解决了   我的游戏一定非常华丽!   我会用好游戏回报的

Lv2.观梦者

虚構歪曲

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

贵宾

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

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

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


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

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

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

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

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

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

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

文件名附上 [n] 即可。
回复

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
190
在线时间
6 小时
注册时间
2011-3-20
帖子
4
3
 楼主| 发表于 2012-4-3 18:31:36 | 只看该作者
……    可是上段中    从那里能看出所改的人物行走帧数呢?
回复

使用道具 举报

Lv2.观梦者

梦石
0
星屑
690
在线时间
791 小时
注册时间
2011-10-20
帖子
2394

开拓者

4
发表于 2012-4-3 20:54:38 手机端发表。 | 只看该作者
sprite_chracter中把4全部修改为你需要的侦即可
欢迎点此进入我的egames.wink.ws,有RMQQ堂等

[url=http://rpg.blue/thread-317273-1-1.html]短篇八-赶选

http://yun.baidu.com/share/link?shareid=2158225779&uk=169642147&third=0


历险ARPG赢回你的疆域新的战斗模式?…………点击这里:[宋乱贼狂 for QQ堂]
http://rpg.blue/group-368-1.html
programing ....?
[url=http://rpg.blue/thrd-234658-1-1.html]
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-27 06:35

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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