Project1

标题: 请问,我如何能够用WSAD行走? [打印本页]

作者: ghxujei    时间: 2014-9-15 11:06
标题: 请问,我如何能够用WSAD行走?
我的鼠标脚本已经加入了,但是只是让鼠标左键控制控制对话、确认,右键返回。这样的话再用上下左右行走多有不便。如何能够让WSAD与上下左右同时能够控制角色行走呢?(类似零之轨迹)
作者: ghxujei    时间: 2014-9-15 11:54
还没有大神会吗……
作者: H·H·Y    时间: 2014-9-15 13:45
本帖最后由 H·H·Y 于 2014-9-15 13:53 编辑

游戏时按一按F1

好像没有……


用公共事件吧
作者: 芯☆淡茹水    时间: 2014-9-15 16:47
这个,插入到 main 前:
  1. #==============================================================================
  2. # ■ Game_Player
  3. #------------------------------------------------------------------------------
  4. #  处理主角的类。事件启动的判定、以及地图的滚动等功能。
  5. # 本类的实例请参考 $game_player。
  6. #==============================================================================

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

作者: 573932914    时间: 2014-9-15 18:58
GAME PLAYER的211行的判断2.4.6.8就是方向键的意思,去掉case改成4个if
未测试
加入全键盘脚本再试吧
作者: Im剑侠客    时间: 2014-9-16 18:41
作一个忠告吧,if条件分歧、全键盘脚本,它们的灵敏度都不高。小游戏还可将就,若是大型一点,操作性强悍一点的Wasd行走的话,简直不能容忍。默认的Case4、Case8都是很棒的说……呵呵,仁智自择吧。
作者: ghxujei    时间: 2014-9-21 23:08
谢谢。我先试试。
作者: ghxujei    时间: 2014-9-21 23:10
挺好用的。就是选技能的时候还是得用左右键。还是谢谢你了。




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