Project1

标题: 有关象素移动的问题 [打印本页]

作者: 277297575    时间: 2011-5-20 11:40
标题: 有关象素移动的问题
好像把Game_character 558和类似的行改成
      @y = $game_map.round_y(@y+0.03125)
      @real_y = (@y-0.03125)*256
就可以达到象素移动,但是有个问题,就是事件(特别是事件)的移动速度太慢了,只有1/8,1/4两种速度有区别,后面的1/2,标准速度,两倍速度和4倍速度都没有效果了,只是自身动作加快了而已,速度不变,就算用脚本改move_speed=999也一样(这个动作有点搞笑)
   PS:不需要他的启动事件判定和地图坐标正确,只想它能走快点,而已。
  ps2:如果用并行处理来使事件移动会有点加速效果,但实在不想用这个方法。dsu_plus_rewardpost_czw
作者: 诡异の猫    时间: 2011-5-20 12:05
本帖最后由 诡异の猫 于 2011-5-20 13:46 编辑

你直接把Game_Character原本的move_up move_down等等等那些方法复制到Game_Event类就行了吧
就是让Game_Event不继承Game_Character的这些方法,还是按原本的移动一格的方法执行


诡异の猫于2011-5-20 13:43补充以下内容:
哦 我明白了
关键在这里
打开Game_Character第306行update_move方法
  1. def update_move
  2.     distance = 2 ** @move_speed   # 转换成移动距离
  3.     distance *= 2 if dash?        # 跑步中加倍
  4.     @real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
  5.     @real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
  6.     @real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
  7.     @real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
  8.     update_bush_depth unless moving?
  9.     if @walk_anime
  10.       @anime_count += 1.5
  11.     elsif @step_anime
  12.       @anime_count += 1
  13.     end
  14.   end
复制代码
举个例子 比如你原始坐标是(0,0) 然后你执行了move_down
那你的x坐标即@x会变成0.03125
但根据update_move的方法以标准速度算(也就是move_speed = 4)
算出来distance也就是每帧移动的距离是2的4次方= 16
此时你看第310行
@real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
你把distance和@x代入算一下你就能明白了
因为你每帧移动的距离超过了一个像素也就是0.03125*256 = 8
所以你最快的速度只能是每帧移动8 也就是1/2倍速




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