Project1

标题: 怎么把移动速度改慢点… [打印本页]

作者: Tabris_Air    时间: 2009-4-16 05:05
标题: 怎么把移动速度改慢点…
……3太慢4又太快…改改脚本能让4变慢一点么? [LINE]1,#dddddd[/LINE]此贴于 2009-4-17 13:42:42 被版主darkten提醒,请楼主看到后对本贴做出回应。
作者: 凌辰    时间: 2009-4-16 05:32
速度和频率配合起来多试几次,嗯。
作者: Tabris_Air    时间: 2009-4-16 05:50
跟频率没关系吧?我就是想改下角色平移速度的大小…比如把内置的速度4:fast改慢点…
作者: 凌辰    时间: 2009-4-16 05:53
行走速度跟频率也有关系的,嗯。
作者: 紫苏    时间: 2009-4-16 05:57
Game_Character 2 的 update_move 里 有一句
distance = 1.8 ** @move_speed
可以改这个试试
作者: tommay    时间: 2009-4-16 06:01
弱问LS大大,移动速度是不是内部定义的?
@move_speed = command.parameters[0]这一句看不懂,请指教- -
作者: redant    时间: 2009-4-16 06:03
class Game_Character
  #--------------------------------------------------------------------------
  # ● 定义实例变量
  #--------------------------------------------------------------------------
  attr_accessor :move_speed

事件脚本$game_player.move_speed = 7.5
作者: 紫苏    时间: 2009-4-16 06:04
以下引用tommay于2009-4-15 22:01:12的发言:

弱问LS大大,移动速度是不是内部定义的?
@move_speed = command.parameters[0]这一句看不懂,请指教- -

这句是在事件强制移动路线更改移动速度时执行的,把 @move_speed 改为更改移动速度中指定的速度……一开始在 Game_Character 的 initialize 中 @move_speed 被初始化为了 4~
作者: tommay    时间: 2009-4-16 06:06
以下引用紫苏于2009-4-15 22:04:31的发言:

这句是在事件强制移动路线更改移动速度时执行的,把 @move_speed 改为更改移动速度中指定的速度……一开始在 Game_Character 的 initialize 中 @move_speed 被初始化为了 4~

这个移动速度初始值4的意义是什么?
作者: 紫苏    时间: 2009-4-16 06:51
Game_Character 的 update 中,@move_speed 直接控制了刷新多少帧切换行走图移动时的下一帧:
if @anime_count > 18 - @move_speed * 2

@anime_count 超过某值后就会切换到行走图下一帧,可以看出 @move_speed 越大,切换得越快~(这个 @anime_count 是在 update_move 的最后每帧增加的)

update_move 中,@move_speed 还控制了刷新一帧角色的实际移动距离:
    distance = 2 ** @move_speed
    # 理论坐标在实际坐标下方的情况下
    if @y * 128 > @real_y
      # 向下移动
      @real_y = [@real_y + distance, @y * 128].min
    end

默认的距离是 2^@move_speed,所以速度 4 是速度 3 的两倍~
以向下移动为例,Game_Player 刷新时会判断玩家是否按下方向键[下],如果按下则会改变继承自 Game_Character 的 @y (除非在地图边缘),这样 update_move 被调用时发现 @y 跟 @real_y 不匹配,于是让 @real_y 增加 distance 那么多(但这时 @real_y 还不一定已经和 @y 一致),并随时用 min 来修正 @real_y 的值最大为 @y * 128(这同时也保证了一次方向键[下]的按下最多移动一格,因为 @y 仅仅增加了 1),就不会出现移动结束时角色实际位置偏移了目的地图块的情况了~distance 反复被加到 @real_y,直到 @y * 128 <= @real_y,这时已经移动到目的地图块,所以 @real_y 不再改变

(RGSS 里面在算屏幕系统坐标的时候经常用图块的坐标 * 128(* 32 才是实际屏幕坐标),这应该是为了提高浮点数运算时的精度,因而在 screen_y、screen_x 获取真实屏幕坐标的时候就做了相应的换算)
作者: tommay    时间: 2009-4-16 06:57
多谢!{/qiang}




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