#==============================================================================
# ■ Game_CharacterBase
#------------------------------------------------------------------------------
# 管理地图人物的基本类。是所有地图人物类的共通父类。拥有坐标、图片等基本信息。
#==============================================================================
class Game_Player < Game_Character
#--------------------------------------------------------------------------
# ● 定义实例变量
#--------------------------------------------------------------------------
attr_accessor :upy # y 每帧增长的y
attr_accessor :upx # x 每帧增长的y
attr_accessor :upover # 强制位移终止
#--------------------------------------------------------------------------
# ● 初始化对象
#--------------------------------------------------------------------------
alias init initialize
def initialize
init
@upx = 0
@upy = 0
@upover = false
end
#--------------------------------------------------------------------------
# ● 由方向键移动
#--------------------------------------------------------------------------
def move_by_input
return if !movable? || ($game_map.interpreter.running? and (@upy == 0 and @upx == 0) ) #多加了一个条件
#若觉得条件太长,改成@uping的true/false变量,一旦使用强制移动就打开,不使用就false
move_straight(Input.dir4) if Input.dir4 > 0
end
#--------------------------------------------------------------------------
# ● 更新画面
# 没有使用alias,请注意插入的位置
#--------------------------------------------------------------------------
def update
last_real_x = @real_x - @upx
last_real_y = @real_y - @upy
last_moving = moving?
move_by_input
super
update_scroll(last_real_x, last_real_y)
if @upy != 0
@y = $game_map.round_y( @y + @upy)
@real_y = @y
end
if @upx != 0 # 这是X轴强制移动的部分,单独和x有关的,基本都是
@x = $game_map.round_x( @x + @upx)
@real_x = @x
end
if @upover == true
@x = @x.to_i # to_i改成整数,否则将会因为小数而无法触发事件
@y = @y.to_i
@upover = false
end
update_vehicle
update_nonmoving(last_moving) unless moving?
@followers.update
end
end