Project1

标题: 当角色只有脸向左和脸向右时怎样判定上下移动? [打印本页]

作者: 纳尔德    时间: 2012-3-21 16:37
标题: 当角色只有脸向左和脸向右时怎样判定上下移动?
我要做的只有两个方向,就是,左和右,无奈不会判定上下走动时应该怎样分歧。就是当脸向左时不管是移动上还是移动下脸始终保持向左,同理右也一样。dsu_plus_rewardpost_czw
作者: YeYe.    时间: 2012-3-21 17:12
没有必要判定!
把行走图改成我这弄的这样!(考验你PS的时候了)



知道我是谁吗?小尔
作者: hys111111    时间: 2012-3-21 20:43
本帖最后由 hys111111 于 2012-3-21 20:44 编辑
  1. #==============================================================================
  2. # ■ Game_Player
  3. #------------------------------------------------------------------------------
  4. #实现即使上下移动,方向保持左右
  5. #==============================================================================

  6. class Game_Player < Game_Character
  7.   #--------------------------------------------------------------------------
  8.   # ● 画面更新
  9.   #--------------------------------------------------------------------------
  10.   def update
  11.     # 本地变量记录移动信息
  12.     last_moving = moving?
  13.     # 移动中、事件执行中、强制移动路线中、
  14.     # 信息窗口一个也不显示的时候
  15.     unless moving? or $game_system.map_interpreter.running? or
  16.            @move_route_forcing or $game_temp.message_window_showing
  17.       # 如果方向键被按下、主角就朝那个方向移动
  18.       case Input.dir4
  19.       when 2
  20.         case @direction
  21.         when 4#左边
  22.           move_down
  23.           turn_left
  24.         when 6#右边
  25.           move_down
  26.           turn_right
  27.         end
  28.       when 4
  29.         move_left
  30.       when 6
  31.         move_right
  32.       when 8
  33.         case @direction
  34.         when 4#左边
  35.           move_up
  36.           turn_left
  37.         when 6#右边
  38.           move_up
  39.           turn_right
  40.         end
  41.       end
  42.     end
  43.     # 本地变量记忆坐标
  44.     last_real_x = @real_x
  45.     last_real_y = @real_y
  46.     super
  47.     # 角色向下移动、画面上的位置在中央下方的情况下
  48.     if @real_y > last_real_y and @real_y - $game_map.display_y > CENTER_Y
  49.       # 画面向下卷动
  50.       $game_map.scroll_down(@real_y - last_real_y)
  51.     end
  52.     # 角色向左移动、画面上的位置在中央左方的情况下
  53.     if @real_x < last_real_x and @real_x - $game_map.display_x < CENTER_X
  54.       # 画面向左卷动
  55.       $game_map.scroll_left(last_real_x - @real_x)
  56.     end
  57.     # 角色向右移动、画面上的位置在中央右方的情况下
  58.     if @real_x > last_real_x and @real_x - $game_map.display_x > CENTER_X
  59.       # 画面向右卷动
  60.       $game_map.scroll_right(@real_x - last_real_x)
  61.     end
  62.     # 角色向上移动、画面上的位置在中央上方的情况下
  63.     if @real_y < last_real_y and @real_y - $game_map.display_y < CENTER_Y
  64.       # 画面向上卷动
  65.       $game_map.scroll_up(last_real_y - @real_y)
  66.     end
  67.     # 不在移动中的情况下
  68.     unless moving?
  69.       # 上次主角移动中的情况
  70.       if last_moving
  71.         # 与同位置的事件接触就判定为事件启动
  72.         result = check_event_trigger_here([1,2])
  73.         # 没有可以启动的事件的情况下
  74.         if result == false
  75.           # 调试模式为 ON 并且按下 CTRL 键的情况下除外
  76.           unless $DEBUG and Input.press?(Input::CTRL)
  77.             # 遇敌计数下降
  78.             if @encounter_count > 0
  79.               @encounter_count -= 1
  80.             end
  81.           end
  82.         end
  83.       end
  84.       # 按下 C 键的情况下
  85.       if Input.trigger?(Input::C)
  86.         # 判定为同位置以及正面的事件启动
  87.         check_event_trigger_here([0])
  88.         check_event_trigger_there([0,1,2])
  89.       end
  90.     end
  91.   end
  92. end
复制代码
在Main前面和Game_Player后面插入该脚本
作者: iNG.天影-冰    时间: 2012-3-21 21:23
本帖最后由 iNG.天影-冰 于 2012-3-21 21:25 编辑

楼上的代码不干脆,会卡的。
代码:(角色一出来,还是向下,你只要设置一下向←或→就是)
  1. class Game_Character
  2.   def move_down(turn_enabled = true)
  3.     # 可以通行的场合
  4.     if passable?(@x, @y, 2)
  5.       # 更新坐标
  6.       @y += 1
  7.       # 增加步数
  8.       increase_steps
  9.     # 不能通行的情况下
  10.     else
  11.       # 接触事件的启动判定
  12.       case @direction
  13.       when 4
  14.       check_event_trigger_touch(@x-1, @y)
  15.       when 6
  16.       check_event_trigger_touch(@x+1, @y)
  17.       end
  18.     end
  19.   end
  20.   def move_left(turn_enabled = true)
  21.     # 面向左
  22.     if turn_enabled
  23.       turn_left
  24.     end
  25.     # 可以通行的情况下
  26.     if passable?(@x, @y, 4)
  27.       # 面向左
  28.       turn_left
  29.       # 更新坐标
  30.       @x -= 1
  31.       # 增加步数
  32.       increase_steps
  33.     # 不能通行的情况下
  34.     else
  35.       # 接触事件的启动判定
  36.       check_event_trigger_touch(@x-1, @y)
  37.     end
  38.   end
  39.   def move_right(turn_enabled = true)
  40.     # 面向右
  41.     if turn_enabled
  42.       turn_right
  43.     end
  44.     # 可以通行的场合
  45.     if passable?(@x, @y, 6)
  46.       # 面向右
  47.       turn_right
  48.       # 更新坐标
  49.       @x += 1
  50.       # 增加步数
  51.       increase_steps
  52.     # 不能通行的情况下
  53.     else
  54.       # 接触事件的启动判定
  55.       check_event_trigger_touch(@x+1, @y)
  56.     end
  57.   end
  58.   def move_up(turn_enabled = true)
  59.     # 可以通行的情况下
  60.     if passable?(@x, @y, 8)
  61.       # 更新坐标
  62.       @y -= 1
  63.       # 歩数増加
  64.       increase_steps
  65.     # 不能通行的情况下
  66.     else
  67.       # 接触事件的启动判定
  68.       case @direction
  69.       when 4
  70.       check_event_trigger_touch(@x-1, @y)
  71.       when 6
  72.       check_event_trigger_touch(@x+1, @y)
  73.       end
  74.     end
  75.   end
  76. end
复制代码





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