Project1

标题: 能否实现,按一下转向,再按一下是移动 [打印本页]

作者: yang1zhi    时间: 2016-8-2 22:28
标题: 能否实现,按一下转向,再按一下是移动
在移动之前先实行转向。而不是直接按方向键就移动了。
默认的是直接就移动的。要转身还要向前走,再走回来才行。
作者: 英顺的马甲    时间: 2016-8-3 00:04
本帖最后由 英顺的马甲 于 2016-8-3 11:33 编辑

RUBY 代码复制
  1. def __method__
  2.   caller[0][/`([^']*)'/] && $1
  3. end
  4. Game_Player = Class.new(Game_Player){
  5.   const_set(:MoveHook, true)
  6.   const_set(:DIRS, {'down' => 2, 'left' => 4, 'right' => 6, 'up' => 8})
  7.   superclass.constants.each{|c|const_set(c, superclass.const_get(c))}
  8.   [:left, :right, :up, :down].each do |d|
  9.     define_method([:move_, d].join) do |*a|
  10.       dir = __method__[/[^_]+$/]
  11.       (self.direction != Game_Player::DIRS[dir] && __move_by_keyboard?) ?
  12.         __send__("turn_" + dir, true) : (__move_by_keyboard? && @__wait > 0) || super(*a)
  13.     end
  14.   end
  15.   [:left, :right, :up, :down].each do |d|
  16.     define_method([:turn_, d].join) do |*a|
  17.       a[0] && @__wait = 5
  18.       super
  19.     end
  20.   end
  21.   def update
  22.     (@__wait||=0) > 0 && @__wait -= 1
  23.     super
  24.   end
  25.   def __move_by_keyboard?
  26.     return ([2,4,6,8].include?(Input.dir4) && !moving? &&
  27.         !$game_system.map_interpreter.running? &&
  28.         !@move_route_forcing && !$game_temp.message_window_showing)
  29.   end
  30. } unless defined?(Game_Player::MoveHook)

如果与原本的方向不同就会在转向之后等待五帧




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