Project1

标题: 如何修改行走图的播放速度 [打印本页]

作者: YSC    时间: 2019-7-29 01:08
标题: 如何修改行走图的播放速度
我把行走图改成8帧,然后发现角色走路的时候,脚踏步和手臂摆动太慢了,走起来比较奇怪。请问怎么样可以修改行走图的播放速度?
(我搜索了之前的帖子,要么过期了,要么没答案。。。)
作者: guoxiaomi    时间: 2019-8-12 11:06
请问你如何把行走图改为8帧?上传一个简单的范例吧
作者: 89444640    时间: 2019-8-12 14:02
本帖最后由 89444640 于 2019-8-12 14:09 编辑
guoxiaomi 发表于 2019-8-12 11:06
请问你如何把行走图改为8帧?上传一个简单的范例吧


我怀疑可能是下面这个,我也是碰上了动作变慢的问题,移动速度5跑起来觉得有点飘,
但是怀疑可能频率变快了足音音效会出问题。
我记得是改了频率以后,所有的行走图也要改成8帧,太吐血,不知道有没有办法可以4帧行走8帧跑动并存,跑动时候刷新变快

xiaomi兄用素材试试看?


#==============================================================================
#把角色行走图名字命名为  名字_帧数 ,比如图片名 Actor ,共  8 帧:Actor_8  ,
#最小帧数 1, 最大不限。不在后面加 _帧数 的,默认为 4 帧。
#作者 芯☆淡茹水
#改版 灯笼菜刀酱
#==============================================================================
class Game_Character
  #--------------------------------------------------------------------------
  def max_frame
    a = @character_name.gsub("【跑动】","")
    a = @character_name.gsub("【走动】","")
    frame = a.split("□")[1]
    return frame ? [frame.to_i, 1].max : 4
  end
  #--------------------------------------------------------------------------
  def update
    # 跳跃中、移动中、停止中的分支
    if jumping?
      update_jump
    elsif moving?
      update_move
    else
      update_stop
    end
    # 动画计数超过最大值的情况下
    # ※最大值等于基本值减去移动速度 * 1 的值
    if @anime_count > 18 - @move_speed * 2
      # 停止动画为 OFF 并且在停止中的情况下
      if not @step_anime and @stop_count > 0
        # 还原为原来的图形
        @pattern = @original_pattern
      # 停止动画为 ON 并且在移动中的情况下
      else
        # 更新图形
        @pattern = (@pattern + 1) % max_frame
      end
      # 清除动画计数
      @anime_count = 0
    end
    # 等待中的情况下
    if @wait_count > 0
      # 减少等待计数
      @wait_count -= 1
      return
    end
    # 强制移动路线的场合
    if @move_route_forcing
      # 自定义移动
      move_type_custom
      return
    end
    # 事件执行待机中并且为锁定状态的情况下
    if @starting or lock?
      # 不做规则移动
      return
    end
    # 如果停止计数超过了一定的值(由移动频度算出)
    if @stop_count > (40 - @move_frequency * 2) * (6 - @move_frequency)
      # 移动类型分支
      case @move_type
      when 1  # 随机
        move_type_random
      when 2  # 接近
        move_type_toward_player
      when 3  # 自定义
        move_type_custom
      end
    end
  end
end



作者: guoxiaomi    时间: 2019-8-12 14:45
本帖最后由 guoxiaomi 于 2019-8-12 15:04 编辑

注意代码里的这一部分:
  1.     # ※最大值等于基本值减去移动速度 * 1 的值
  2.     if @anime_count > 18 - @move_speed * 2
复制代码

解释一下,每次修改了行走图显示的bitmap时,@anime_count会重新从 0 计数,当计数的值超过了 18 - @move_speed * 2 就会切换到下一个动画帧

所以只需要按照自己的需求修改后面的公式,最简单的方法是修改 18 和 2,比如改成
  1. 16 - @move_speed * 3
复制代码

右边计算的值就是行走图每帧之间的时间间隔,比如移动速度 4,原来就是 18 - 4 * 2 = 10 帧,修改后变成 16 - 4 * 3 = 2 帧,会明显流畅很多。如果移动速度提升到5,原来是8帧,现在是1帧,1帧的等待时间会非常欢乐。

关于 @anime_count,程序里有这样的部分:
RUBY 代码复制
  1. # 移动时动画为 ON 的情况下
  2.     if @walk_anime
  3.       # 动画计数增加 1.5
  4.       @anime_count += 1.5
  5.     # 移动时动画为 OFF、停止时动画为 ON 的情况下
  6.     elsif @step_anime
  7.       # 动画计数增加 1
  8.       @anime_count += 1
  9.     end

在移动的时候,每帧 +1.5,原地踏步时,每帧 +1。修改这里的 1.5 也是可行的~
作者: 89444640    时间: 2019-8-12 16:22
我这里三个地方调用过, if @anime_count > 18 - @move_speed * 2
如果改成 16 - 4 * 3 = 2,后果就是移动速度增快以后会变成快进镜头样的效果了。
虽然默认的流畅了,但是其他动作全都不舒服,还是用默认的吧。




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