赞 | 0 |
VIP | 47 |
好人卡 | 14 |
积分 | 1 |
经验 | 6342 |
最后登录 | 2015-10-31 |
在线时间 | 466 小时 |
Lv1.梦旅人
- 梦石
- 0
- 星屑
- 50
- 在线时间
- 466 小时
- 注册时间
- 2006-2-25
- 帖子
- 1863
|
本帖最后由 诡异の猫 于 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倍速 |
|