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

Project1

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

如何用两张四方向的人物行走图实现八方向行走?

 关闭 [复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-2
帖子
97
跳转到指定楼层
1
发表于 2009-4-30 03:06:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
记得原来站上有这个脚本。希望高人帮忙发下。谢谢。
版务信息:本贴由楼主自主结贴~

Lv1.梦旅人

梦石
0
星屑
215
在线时间
85 小时
注册时间
2008-6-16
帖子
159
2
发表于 2009-4-30 03:45:18 | 只看该作者
不知LZ要的是哪个…………

伪·八方向走http://rpg.blue/web/htm/news321.htm…………
真·八方向走http://rpg.blue/web/htm/news136.htm…………
八方向走(功能实现+手感加强)http://rpg.blue/web/htm/news219.htm…………
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
3
发表于 2009-4-30 04:06:26 | 只看该作者
是这个吗?

  1. #==============================================================================
  2. #
  3. # 脚本名称:可自动识别的8方向移动脚本
  4. # 脚本作者: パラ犬
  5. # 主页:http://2d6.parasite.jp/
  6. #
  7. #------------------------------------------------------------------------------
  8. #
  9. # 如果只有“上下左右”四方向的行走图,就使用默认的四方向脚本
  10. # 如果要使用八方向的脚本,需要在 \Graphics\Characters 里有另外四方向的行走图,
  11. # 命名为“四方向名称 + _quarter”
  12. #
  13. # 斜方向行走图的格式参考: 001-Fighter01_quarter
  14. #
  15. #------------------------------------------------------------------------------
  16. #[設置上の注意]
  17. # 「グラフィック変更ダッシュ」と併用する場合、このスクリプトを
  18. # ダッシュスクリプトよりも下に置いてください。
  19. # 斜め方向ダッシュの画像ファイル名は「(先頭キャラクター名)+_dash_quarter」に
  20. # なります。
  21. #==============================================================================

  22. #==============================================================================
  23. # ■ Game_Player
  24. #==============================================================================

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

  48. #==============================================================================
  49. # ■ Sprite_Character
  50. #==============================================================================

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

  125. #==============================================================================
  126. # ■ Game_Character
  127. #==============================================================================

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

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
0 小时
注册时间
2007-8-2
帖子
97
4
 楼主| 发表于 2009-5-1 23:38:57 | 只看该作者
以下引用tommay于2009-4-29 20:06:26的发言:

是这个吗?

#==============================================================================
#
# 脚本名称:可自动识别的8方向移动脚本
# 脚本作者: パラ犬
# 主页:http://2d6.parasite.jp/
#
#------------------------------------------------------------------------------
#
# 如果只有“上下左右”四方向的行走图,就使用默认的四方向脚本
# 如果要使用八方向的脚本,需要在 \Graphics\Characters 里有另外四方向的行走图,
# 命名为“四方向名称 + _quarter”
#
# 斜方向行走图的格式参考: 001-Fighter01_quarter
#
#------------------------------------------------------------------------------
#[設置上の注意]
# 「グラフィック変更ダッシュ」と併用する場合、このスクリプトを
# ダッシュスクリプトよりも下に置いてください。
# 斜め方向ダッシュの画像ファイル名は「(先頭キャラクター名)+_dash_quarter」に
# なります。
#==============================================================================

#==============================================================================
# ■ Game_Player
#==============================================================================

class Game_Player < Game_Character
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_para_quarter update
  def update
    update_para_quarter
    unless moving? or $game_system.map_interpreter.running? or
           @move_route_forcing or $game_temp.message_window_showing
      # 方向ボタンが押されていれば、その方向へプレイヤーを移動
      case Input.dir8
      when 1  # 左下に移動
        move_lower_left
      when 3  # 右下に移動
        move_lower_right
      when 7  # 左上に移動
        move_upper_left
      when 9  # 右上に移動
        move_upper_right
      end
    end
  end
end

#==============================================================================
# ■ Sprite_Character
#==============================================================================

class Sprite_Character < RPG::Sprite
  #--------------------------------------------------------------------------
  # ● フレーム更新
  #--------------------------------------------------------------------------
  alias update_para_quarter update
  def update
    update_para_quarter
    if @tile_id == 0
      if (@character.direction - 2) % 2 == 1
        # 斜め画像の有無をチェック
        if quarter_graphic_exist?(@character)
          # 斜め画像をセット
          if character.dash_on and dash_quarter_graphic_exist?(@character)
            @character_name = @character.character_name + "_dash_quarter"
          else
            @character_name = @character.character_name + "_quarter"
          end
          self.bitmap = RPG::Cache.character(@character_name,
            @character.character_hue)
          # 向きを取得
          case @character.direction
            when 1
              n = 0
            when 3
              n = 2
            when 7
              n = 1
            when 9
              n = 3
          end
        else
          @character.direction = @character.sub_direction
          # 斜め画像が存在しないときの向き
          n = (@character.direction - 2) / 2
        end
        # 転送元の矩形を設定
        sx = @character.pattern * @cw
        sy = n * @ch
        self.src_rect.set(sx, sy, @cw, @ch)
      else
        self.bitmap = RPG::Cache.character(@character.character_name,
          @character.character_hue)
        # 転送元の矩形を設定
        sx = @character.pattern * @cw
        sy = (@character.direction - 2) / 2 * @ch
        self.src_rect.set(sx, sy, @cw, @ch)
      end
    end
  end
  #--------------------------------------------------------------------------
  # ○ 斜め画像の有無をチェック
  #--------------------------------------------------------------------------
  def quarter_graphic_exist?(character)
    # 読み込みテスト
    begin
      RPG::Cache.character(character.character_name.to_s + "_quarter", character.character_hue)
    rescue
      return false
    end
    return true
  end
  #--------------------------------------------------------------------------
  # ○ 斜めダッシュ画像の有無をチェック
  #--------------------------------------------------------------------------
  def dash_quarter_graphic_exist?(character)
    # 読み込みテスト
    begin
      RPG::Cache.character(character.character_name.to_s + "_dash_quarter", character.character_hue)
    rescue
      return false
    end
    return true
  end
end

#==============================================================================
# ■ Game_Character
#==============================================================================

class Game_Character
  #--------------------------------------------------------------------------
  # ● 公開インスタンス変数
  #--------------------------------------------------------------------------
  attr_accessor   :direction        # 向き
  attr_accessor   :sub_direction    # 斜め画像が存在しないときの向き
  #--------------------------------------------------------------------------
  # ● 左下に移動
  #--------------------------------------------------------------------------
  def move_lower_left
    # 向き固定でない場合
    unless @direction_fix
      @sub_direction = @direction
      @direction = 1
      # 右向きだった場合は左を、上向きだった場合は下を向く
      @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 8 ? 2 : @sub_direction)
    end
    # 下→左、左→下 のどちらかのコースが通行可能な場合
    if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 4)) or
       (passable?(@x, @y, 4) and passable?(@x - 1, @y, 2))
      # 座標を更新
      @x -= 1
      @y += 1
      # 歩数増加
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ● 右下に移動
  #--------------------------------------------------------------------------
  def move_lower_right
    # 向き固定でない場合
    unless @direction_fix
      @sub_direction = @direction
      @direction = 3
      # 左向きだった場合は右を、上向きだった場合は下を向く
      @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 8 ? 2 : @sub_direction)
    end
    # 下→右、右→下 のどちらかのコースが通行可能な場合
    if (passable?(@x, @y, 2) and passable?(@x, @y + 1, 6)) or
       (passable?(@x, @y, 6) and passable?(@x + 1, @y, 2))
      # 座標を更新
      @x += 1
      @y += 1
      # 歩数増加
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ● 左上に移動
  #--------------------------------------------------------------------------
  def move_upper_left
    # 向き固定でない場合
    unless @direction_fix
      @sub_direction = @direction
      @direction = 7
      # 右向きだった場合は左を、下向きだった場合は上を向く
      @sub_direction = (@sub_direction == 6 ? 4 : @sub_direction == 2 ? 8 : @sub_direction)
    end
    # 上→左、左→上 のどちらかのコースが通行可能な場合
    if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 4)) or
       (passable?(@x, @y, 4) and passable?(@x - 1, @y, 8))
      # 座標を更新
      @x -= 1
      @y -= 1
      # 歩数増加
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ● 右上に移動
  #--------------------------------------------------------------------------
  def move_upper_right
    # 向き固定でない場合
    unless @direction_fix
      @sub_direction = @direction
      @direction = 9
      # 左向きだった場合は右を、下向きだった場合は上を向く
      @sub_direction = (@sub_direction == 4 ? 6 : @sub_direction == 2 ? 8 : @sub_direction)
    end
    # 上→右、右→上 のどちらかのコースが通行可能な場合
    if (passable?(@x, @y, 8) and passable?(@x, @y - 1, 6)) or
       (passable?(@x, @y, 6) and passable?(@x + 1, @y, 8))
      # 座標を更新
      @x += 1
      @y -= 1
      # 歩数増加
      increase_steps
    end
  end
  #--------------------------------------------------------------------------
  # ○ ダッシュスクリプト導入判定
  #--------------------------------------------------------------------------
  def dash_on
    if @dash_on != nil
      return @dash_on
    else
      return false
    end
  end
end




应该就是这个。
但是这里“ 斜方向行走图的格式参考: 001-Fighter01_quarter”
这个斜方向图片在哪里?能否提供呢?
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦·贤者

梦石
0
星屑
50
在线时间
1141 小时
注册时间
2007-12-15
帖子
4100
5
发表于 2009-5-2 00:40:14 | 只看该作者
忘了,抱歉= =

系统信息:本贴由楼主认可为正确答案,66RPG感谢您的热情解答~
http://rpg.blue/home.php?mod=space&uid=34951&do=blog&id=12799
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2025-1-16 02:39

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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