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

Project1

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

[RM脚本] 8方向移动切换行走图 (外连)

 关闭 [复制链接]

Lv1.梦旅人

NewS-

梦石
0
星屑
50
在线时间
5 小时
注册时间
2005-10-23
帖子
3651

贵宾

跳转到指定楼层
1
发表于 2006-5-29 22:34:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
[概要]
上下キーと左右キーを同時押しすることにより、斜め移動を可能にします。
先頭キャラクターに斜め移動時の画像が用意されている場合は、それを使用して表示します。
イベントコマンド「移動ルートの設定」での斜め方向指定にも対応しています。

  1. #==============================================================================
  2. # ++ グラフィック変更8方向移動 ver. 1.01 ++
  3. #  Script by パラ犬
  4. #  http://para.j-mx.com/
  5. #------------------------------------------------------------------------------
  6. # 上下キーと左右キーを同時押しすることにより斜め移動を可能にし、
  7. # 「Graphics/Characters」フォルダに
  8. # 「(先頭キャラクター名)+_quarter」という名前のファイルがある場合
  9. # 斜め移動時のグラフィックとして使用します。(例:001-Fighter01_quarter)
  10. #------------------------------------------------------------------------------
  11. #[設置上の注意]
  12. # 「グラフィック変更ダッシュ」と併用する場合、このスクリプトを
  13. # ダッシュスクリプトよりも下に置いてください。
  14. # 斜め方向ダッシュの画像ファイル名は「(先頭キャラクター名)+_dash_quarter」に
  15. # なります。
  16. #==============================================================================

  17. #==============================================================================
  18. # ■ Game_Player
  19. #==============================================================================

  20. class Game_Player < Game_Character
  21.   #--------------------------------------------------------------------------
  22.   # ● フレーム更新
  23.   #--------------------------------------------------------------------------
  24.   alias update_para_quarter update
  25.   def update
  26.     update_para_quarter
  27.     unless moving? or $game_system.map_interpreter.running? or
  28.            @move_route_forcing or $game_temp.message_window_showing
  29.       # 方向ボタンが押されていれば、その方向へプレイヤーを移動
  30.       case Input.dir8
  31.       when 1  # 左下に移動
  32.         move_lower_left
  33.       when 3  # 右下に移動
  34.         move_lower_right
  35.       when 7  # 左上に移動
  36.         move_upper_left
  37.       when 9  # 右上に移動
  38.         move_upper_right
  39.       end
  40.     end
  41.   end
  42. end

  43. #==============================================================================
  44. # ■ Sprite_Character
  45. #==============================================================================

  46. class Sprite_Character < RPG::Sprite
  47.   #--------------------------------------------------------------------------
  48.   # ● フレーム更新
  49.   #--------------------------------------------------------------------------
  50.   alias update_para_quarter update
  51.   def update
  52.     update_para_quarter
  53.     if @tile_id == 0
  54.       if (@character.direction - 2) % 2 == 1
  55.         # 斜め画像の有無をチェック
  56.         if quarter_graphic_exist?(@character)
  57.           # 斜め画像をセット
  58.           if character.dash_on and dash_quarter_graphic_exist?(@character)
  59.             @character_name = @character.character_name + "_dash_quarter"
  60.           else
  61.             @character_name = @character.character_name + "_quarter"
  62.           end
  63.           self.bitmap = RPG::Cache.character(@character_name,
  64.             @character.character_hue)
  65.           # 向きを取得
  66.           case @character.direction
  67.             when 1
  68.               n = 0
  69.             when 3
  70.               n = 2
  71.             when 7
  72.               n = 1
  73.             when 9
  74.               n = 3
  75.           end
  76.         else
  77.           @character.direction = @character.sub_direction
  78.           # 斜め画像が存在しないときの向き
  79.           n = (@character.direction - 2) / 2
  80.         end
  81.         # 転送元の矩形を設定
  82.         sx = @character.pattern * @cw
  83.         sy = n * @ch
  84.         self.src_rect.set(sx, sy, @cw, @ch)
  85.       else
  86.         self.bitmap = RPG::Cache.character(@character.character_name,
  87.           @character.character_hue)
  88.         # 転送元の矩形を設定
  89.         sx = @character.pattern * @cw
  90.         sy = (@character.direction - 2) / 2 * @ch
  91.         self.src_rect.set(sx, sy, @cw, @ch)
  92.       end
  93.     end
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ○ 斜め画像の有無をチェック
  97.   #--------------------------------------------------------------------------
  98.   def quarter_graphic_exist?(character)
  99.     # 読み込みテスト
  100.     begin
  101.       RPG::Cache.character(character.character_name.to_s + "_quarter", character.character_hue)
  102.     rescue
  103.       return false
  104.     end
  105.     return true
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ○ 斜めダッシュ画像の有無をチェック
  109.   #--------------------------------------------------------------------------
  110.   def dash_quarter_graphic_exist?(character)
  111.     # 読み込みテスト
  112.     begin
  113.       RPG::Cache.character(character.character_name.to_s + "_dash_quarter", character.character_hue)
  114.     rescue
  115.       return false
  116.     end
  117.     return true
  118.   end
  119. end

  120. #==============================================================================
  121. # ■ Game_Character
  122. #==============================================================================

  123. class Game_Character
  124.   #--------------------------------------------------------------------------
  125.   # ● 公開インスタンス変数
  126.   #--------------------------------------------------------------------------
  127.   attr_accessor   :direction        # 向き
  128.   attr_accessor   :sub_direction    # 斜め画像が存在しないときの向き
  129.   #--------------------------------------------------------------------------
  130.   # ● 左下に移動
  131.   #--------------------------------------------------------------------------
  132.   def move_lower_left
  133.     # 向き固定でない場合
  134.     unless @direction_fix
  135.       @sub_direction = @direction
  136.       @direction = 1
  137.       # 右向きだった場合は左を、上向きだった場合は下を向く
  138.       @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 8 ? 2 : @sub_direction)
  139.     end
  140.     # 下→左、左→下 のどちらかのコースが通行可能な場合
  141.     if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
  142.        (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
  143.       # 座標を更新
  144.       @x -= 1
  145.       @y += 1
  146.       # 歩数増加
  147.       increase_steps
  148.     end
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 右下に移動
  152.   #--------------------------------------------------------------------------
  153.   def move_lower_right
  154.     # 向き固定でない場合
  155.     unless @direction_fix
  156.       @sub_direction = @direction
  157.       @direction = 3
  158.       # 左向きだった場合は右を、上向きだった場合は下を向く
  159.       @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 8 ? 2 : @sub_direction)
  160.     end
  161.     # 下→右、右→下 のどちらかのコースが通行可能な場合
  162.     if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 6)) or
  163.        (passable?(@x, @y, 6) and passable?(@x + 1, @y, 2))
  164.       # 座標を更新
  165.       @x += 1
  166.       @y += 1
  167.       # 歩数増加
  168.       increase_steps
  169.     end
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 左上に移動
  173.   #--------------------------------------------------------------------------
  174.   def move_upper_left
  175.     # 向き固定でない場合
  176.     unless @direction_fix
  177.       @sub_direction = @direction
  178.       @direction = 7
  179.       # 右向きだった場合は左を、下向きだった場合は上を向く
  180.       @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 2 ? 8 : @sub_direction)
  181.     end
  182.     # 上→左、左→上 のどちらかのコースが通行可能な場合
  183.     if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 4)) or
  184.        (passable?(@x, @y, 4) and passable?(@x - 1, @y, 8))
  185.       # 座標を更新
  186.       @x -= 1
  187.       @y -= 1
  188.       # 歩数増加
  189.       increase_steps
  190.     end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 右上に移動
  194.   #--------------------------------------------------------------------------
  195.   def move_upper_right
  196.     # 向き固定でない場合
  197.     unless @direction_fix
  198.       @sub_direction = @direction
  199.       @direction = 9
  200.       # 左向きだった場合は右を、下向きだった場合は上を向く
  201.       @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 2 ? 8 : @sub_direction)
  202.     end
  203.     # 上→右、右→上 のどちらかのコースが通行可能な場合
  204.     if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 6)) or
  205.        (passable?(@x, @y, 6) and passable?(@x + 1, @y, 8))
  206.       # 座標を更新
  207.       @x += 1
  208.       @y -= 1
  209.       # 歩数増加
  210.       increase_steps
  211.     end
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ○ ダッシュスクリプト導入判定
  215.   #--------------------------------------------------------------------------
  216.   def dash_on
  217.     if @dash_on != nil
  218.       return @dash_on
  219.     else
  220.       return false
  221.     end
  222.   end
  223. end
复制代码


[使う前に]
斜め移動時の画像を用意し、「(キャラクターの歩行グラフィック名)+_quarter」という名前をつけて
「Graphics/Characters」フォルダにインポートします。
画像がなくても、8方向移動機能は使用可能です。

サンプル:
 RTP素材「001-Fighter01」斜め画像
 (右クリック→「名前を付けて画像を保存」でダウンロード)



[併用について]
スクリプト「グラフィック変更ダッシュ」と併用する場合、
このスクリプトをダッシュスクリプトよりも下に置いてください。
斜め方向ダッシュの画像ファイル名は、「(先頭キャラクター名)+_dash_quarter」になります。



[更新履歴]
2005/10/1 ver.1.01
 イベントキャラクターの斜め移動でエラーが出る問題を修正。
2005/9/9 ver.1.00
 公開。


              [本贴由 柳柳 于 2006-6-8 17:29:56 最后编辑]
66RPG,这几个简单字符,之于我代表了什么?泪泪博客:http://hi.baidu.com/rpgmakerxp

Lv1.梦旅人

NewS-

梦石
0
星屑
50
在线时间
5 小时
注册时间
2005-10-23
帖子
3651

贵宾

2
 楼主| 发表于 2006-5-29 22:34:26 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
[概要]
上下キーと左右キーを同時押しすることにより、斜め移動を可能にします。
先頭キャラクターに斜め移動時の画像が用意されている場合は、それを使用して表示します。
イベントコマンド「移動ルートの設定」での斜め方向指定にも対応しています。

  1. #==============================================================================
  2. # ++ グラフィック変更8方向移動 ver. 1.01 ++
  3. #  Script by パラ犬
  4. #  http://para.j-mx.com/
  5. #------------------------------------------------------------------------------
  6. # 上下キーと左右キーを同時押しすることにより斜め移動を可能にし、
  7. # 「Graphics/Characters」フォルダに
  8. # 「(先頭キャラクター名)+_quarter」という名前のファイルがある場合
  9. # 斜め移動時のグラフィックとして使用します。(例:001-Fighter01_quarter)
  10. #------------------------------------------------------------------------------
  11. #[設置上の注意]
  12. # 「グラフィック変更ダッシュ」と併用する場合、このスクリプトを
  13. # ダッシュスクリプトよりも下に置いてください。
  14. # 斜め方向ダッシュの画像ファイル名は「(先頭キャラクター名)+_dash_quarter」に
  15. # なります。
  16. #==============================================================================

  17. #==============================================================================
  18. # ■ Game_Player
  19. #==============================================================================

  20. class Game_Player < Game_Character
  21.   #--------------------------------------------------------------------------
  22.   # ● フレーム更新
  23.   #--------------------------------------------------------------------------
  24.   alias update_para_quarter update
  25.   def update
  26.     update_para_quarter
  27.     unless moving? or $game_system.map_interpreter.running? or
  28.            @move_route_forcing or $game_temp.message_window_showing
  29.       # 方向ボタンが押されていれば、その方向へプレイヤーを移動
  30.       case Input.dir8
  31.       when 1  # 左下に移動
  32.         move_lower_left
  33.       when 3  # 右下に移動
  34.         move_lower_right
  35.       when 7  # 左上に移動
  36.         move_upper_left
  37.       when 9  # 右上に移動
  38.         move_upper_right
  39.       end
  40.     end
  41.   end
  42. end

  43. #==============================================================================
  44. # ■ Sprite_Character
  45. #==============================================================================

  46. class Sprite_Character < RPG::Sprite
  47.   #--------------------------------------------------------------------------
  48.   # ● フレーム更新
  49.   #--------------------------------------------------------------------------
  50.   alias update_para_quarter update
  51.   def update
  52.     update_para_quarter
  53.     if @tile_id == 0
  54.       if (@character.direction - 2) % 2 == 1
  55.         # 斜め画像の有無をチェック
  56.         if quarter_graphic_exist?(@character)
  57.           # 斜め画像をセット
  58.           if character.dash_on and dash_quarter_graphic_exist?(@character)
  59.             @character_name = @character.character_name + "_dash_quarter"
  60.           else
  61.             @character_name = @character.character_name + "_quarter"
  62.           end
  63.           self.bitmap = RPG::Cache.character(@character_name,
  64.             @character.character_hue)
  65.           # 向きを取得
  66.           case @character.direction
  67.             when 1
  68.               n = 0
  69.             when 3
  70.               n = 2
  71.             when 7
  72.               n = 1
  73.             when 9
  74.               n = 3
  75.           end
  76.         else
  77.           @character.direction = @character.sub_direction
  78.           # 斜め画像が存在しないときの向き
  79.           n = (@character.direction - 2) / 2
  80.         end
  81.         # 転送元の矩形を設定
  82.         sx = @character.pattern * @cw
  83.         sy = n * @ch
  84.         self.src_rect.set(sx, sy, @cw, @ch)
  85.       else
  86.         self.bitmap = RPG::Cache.character(@character.character_name,
  87.           @character.character_hue)
  88.         # 転送元の矩形を設定
  89.         sx = @character.pattern * @cw
  90.         sy = (@character.direction - 2) / 2 * @ch
  91.         self.src_rect.set(sx, sy, @cw, @ch)
  92.       end
  93.     end
  94.   end
  95.   #--------------------------------------------------------------------------
  96.   # ○ 斜め画像の有無をチェック
  97.   #--------------------------------------------------------------------------
  98.   def quarter_graphic_exist?(character)
  99.     # 読み込みテスト
  100.     begin
  101.       RPG::Cache.character(character.character_name.to_s + "_quarter", character.character_hue)
  102.     rescue
  103.       return false
  104.     end
  105.     return true
  106.   end
  107.   #--------------------------------------------------------------------------
  108.   # ○ 斜めダッシュ画像の有無をチェック
  109.   #--------------------------------------------------------------------------
  110.   def dash_quarter_graphic_exist?(character)
  111.     # 読み込みテスト
  112.     begin
  113.       RPG::Cache.character(character.character_name.to_s + "_dash_quarter", character.character_hue)
  114.     rescue
  115.       return false
  116.     end
  117.     return true
  118.   end
  119. end

  120. #==============================================================================
  121. # ■ Game_Character
  122. #==============================================================================

  123. class Game_Character
  124.   #--------------------------------------------------------------------------
  125.   # ● 公開インスタンス変数
  126.   #--------------------------------------------------------------------------
  127.   attr_accessor   :direction        # 向き
  128.   attr_accessor   :sub_direction    # 斜め画像が存在しないときの向き
  129.   #--------------------------------------------------------------------------
  130.   # ● 左下に移動
  131.   #--------------------------------------------------------------------------
  132.   def move_lower_left
  133.     # 向き固定でない場合
  134.     unless @direction_fix
  135.       @sub_direction = @direction
  136.       @direction = 1
  137.       # 右向きだった場合は左を、上向きだった場合は下を向く
  138.       @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 8 ? 2 : @sub_direction)
  139.     end
  140.     # 下→左、左→下 のどちらかのコースが通行可能な場合
  141.     if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
  142.        (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
  143.       # 座標を更新
  144.       @x -= 1
  145.       @y += 1
  146.       # 歩数増加
  147.       increase_steps
  148.     end
  149.   end
  150.   #--------------------------------------------------------------------------
  151.   # ● 右下に移動
  152.   #--------------------------------------------------------------------------
  153.   def move_lower_right
  154.     # 向き固定でない場合
  155.     unless @direction_fix
  156.       @sub_direction = @direction
  157.       @direction = 3
  158.       # 左向きだった場合は右を、上向きだった場合は下を向く
  159.       @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 8 ? 2 : @sub_direction)
  160.     end
  161.     # 下→右、右→下 のどちらかのコースが通行可能な場合
  162.     if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 6)) or
  163.        (passable?(@x, @y, 6) and passable?(@x + 1, @y, 2))
  164.       # 座標を更新
  165.       @x += 1
  166.       @y += 1
  167.       # 歩数増加
  168.       increase_steps
  169.     end
  170.   end
  171.   #--------------------------------------------------------------------------
  172.   # ● 左上に移動
  173.   #--------------------------------------------------------------------------
  174.   def move_upper_left
  175.     # 向き固定でない場合
  176.     unless @direction_fix
  177.       @sub_direction = @direction
  178.       @direction = 7
  179.       # 右向きだった場合は左を、下向きだった場合は上を向く
  180.       @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 2 ? 8 : @sub_direction)
  181.     end
  182.     # 上→左、左→上 のどちらかのコースが通行可能な場合
  183.     if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 4)) or
  184.        (passable?(@x, @y, 4) and passable?(@x - 1, @y, 8))
  185.       # 座標を更新
  186.       @x -= 1
  187.       @y -= 1
  188.       # 歩数増加
  189.       increase_steps
  190.     end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 右上に移動
  194.   #--------------------------------------------------------------------------
  195.   def move_upper_right
  196.     # 向き固定でない場合
  197.     unless @direction_fix
  198.       @sub_direction = @direction
  199.       @direction = 9
  200.       # 左向きだった場合は右を、下向きだった場合は上を向く
  201.       @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 2 ? 8 : @sub_direction)
  202.     end
  203.     # 上→右、右→上 のどちらかのコースが通行可能な場合
  204.     if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 6)) or
  205.        (passable?(@x, @y, 6) and passable?(@x + 1, @y, 8))
  206.       # 座標を更新
  207.       @x += 1
  208.       @y -= 1
  209.       # 歩数増加
  210.       increase_steps
  211.     end
  212.   end
  213.   #--------------------------------------------------------------------------
  214.   # ○ ダッシュスクリプト導入判定
  215.   #--------------------------------------------------------------------------
  216.   def dash_on
  217.     if @dash_on != nil
  218.       return @dash_on
  219.     else
  220.       return false
  221.     end
  222.   end
  223. end
复制代码


[使う前に]
斜め移動時の画像を用意し、「(キャラクターの歩行グラフィック名)+_quarter」という名前をつけて
「Graphics/Characters」フォルダにインポートします。
画像がなくても、8方向移動機能は使用可能です。

サンプル:
 RTP素材「001-Fighter01」斜め画像
 (右クリック→「名前を付けて画像を保存」でダウンロード)



[併用について]
スクリプト「グラフィック変更ダッシュ」と併用する場合、
このスクリプトをダッシュスクリプトよりも下に置いてください。
斜め方向ダッシュの画像ファイル名は、「(先頭キャラクター名)+_dash_quarter」になります。



[更新履歴]
2005/10/1 ver.1.01
 イベントキャラクターの斜め移動でエラーが出る問題を修正。
2005/9/9 ver.1.00
 公開。


              [本贴由 柳柳 于 2006-6-8 17:29:56 最后编辑]
66RPG,这几个简单字符,之于我代表了什么?泪泪博客:http://hi.baidu.com/rpgmakerxp
头像被屏蔽

Lv1.梦旅人 (禁止发言)

梦石
0
星屑
50
在线时间
0 小时
注册时间
2006-6-24
帖子
39
3
发表于 2006-8-8 05:10:05 | 只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2006-8-9
帖子
510
4
发表于 2006-8-10 02:13:47 | 只看该作者
我日盲,过了一眼...
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
265
在线时间
1373 小时
注册时间
2005-10-16
帖子
5113

贵宾

5
发表于 2006-8-10 02:23:04 | 只看该作者
我就觉得这个行走图挺好。。。。。{/ll}
我只个搬答案的
叔叔我已经当爹了~
婚后闪人了……
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2006-8-9
帖子
510
6
发表于 2006-8-10 02:35:45 | 只看该作者
做45度角游戏...
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
55
在线时间
1 小时
注册时间
2006-4-13
帖子
9
7
发表于 2006-8-12 22:39:24 | 只看该作者
这和站上的8方向有什么区别呢?
回复 支持 反对

使用道具 举报

Lv2.观梦者

梦石
0
星屑
910
在线时间
94 小时
注册时间
2005-10-22
帖子
397
8
发表于 2006-8-16 23:51:53 | 只看该作者
以下引用歌声媚影于2006-8-12 14:39:24的发言:

这和站上的8方向有什么区别呢?

区别就是没有翻译成中文。
做脚本先从修改脚本做起,我只修改自己觉得能用到的东西。
以后的任何作品都将不会进行分享。
Bilibili:https://space.bilibili.com/288814521
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1 小时
注册时间
2006-8-9
帖子
510
9
发表于 2006-8-17 04:30:26 | 只看该作者
以下引用ikki于2006-8-16 15:51:53的发言:


以下引用歌声媚影于2006-8-12 14:39:24的发言:

这和站上的8方向有什么区别呢?


区别就是没有翻译成中文。
误人子弟..
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-5-8 11:01

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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