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方法
def update_move
distance = 2 ** @move_speed # 转换成移动距离
distance *= 2 if dash? # 跑步中加倍
@real_x = [@real_x - distance, @x * 256].max if @x * 256 < @real_x
@real_x = [@real_x + distance, @x * 256].min if @x * 256 > @real_x
@real_y = [@real_y - distance, @y * 256].max if @y * 256 < @real_y
@real_y = [@real_y + distance, @y * 256].min if @y * 256 > @real_y
update_bush_depth unless moving?
if @walk_anime
@anime_count += 1.5
elsif @step_anime
@anime_count += 1
end
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