设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 2655|回复: 11
打印 上一主题 下一主题

[已经解决] 如何修改行走图的播放速度

[复制链接]

Lv2.观梦者

梦石
0
星屑
625
在线时间
130 小时
注册时间
2015-4-2
帖子
78

开拓者

跳转到指定楼层
1
发表于 2019-7-29 01:08:35 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
我把行走图改成8帧,然后发现角色走路的时候,脚踏步和手臂摆动太慢了,走起来比较奇怪。请问怎么样可以修改行走图的播放速度?
(我搜索了之前的帖子,要么过期了,要么没答案。。。)

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

2
发表于 2019-8-12 11:06:22 | 只看该作者
请问你如何把行走图改为8帧?上传一个简单的范例吧
熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
3
发表于 2019-8-12 14:02:18 | 只看该作者
本帖最后由 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


点评

看楼下  发表于 2019-8-12 14:50
回复 支持 反对

使用道具 举报

Lv5.捕梦者 (版主)

梦石
1
星屑
23994
在线时间
3339 小时
注册时间
2011-7-8
帖子
3926

开拓者

4
发表于 2019-8-12 14:45:39 | 只看该作者
本帖最后由 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 也是可行的~

点评

YSC
多谢前辈,按这个方法,我调整好了  发表于 2019-8-18 13:50

评分

参与人数 1星屑 +150 +1 收起 理由
RyanBern + 150 + 1 认可答案

查看全部评分

熟悉rgss和ruby,xp区版主~
正在填坑:《膜拜组传奇》讲述膜拜组和学霸们的故事。
已上steam:与TXBD合作的Reformers《变革者》
* 战斗调用公共事件 *
* RGSOS 网络脚本 *
回复 支持 反对

使用道具 举报

Lv5.捕梦者

梦石
0
星屑
35186
在线时间
4169 小时
注册时间
2007-12-15
帖子
10067
5
发表于 2019-8-12 16:22:07 | 只看该作者
我这里三个地方调用过, if @anime_count > 18 - @move_speed * 2
如果改成 16 - 4 * 3 = 2,后果就是移动速度增快以后会变成快进镜头样的效果了。
虽然默认的流畅了,但是其他动作全都不舒服,还是用默认的吧。

点评

不过最小值是1还是2,可能需要试试看  发表于 2019-8-13 14:29
可以,比如[16 - @move_speed * 3, 1].min  发表于 2019-8-13 14:28
因为脚本可以改移动速度为6以上,我要是用加个条件,移动速度大于等于6为一帧,就应该可以避免动作闪烁不连贯的问题了吧?  发表于 2019-8-13 07:11
或者类似 [10,9,8,7,6,5,4,3][@move_speed.to_i] 这种直接用数组指定的形式  发表于 2019-8-13 00:24
你可以考虑,比如速度4是3帧,速度5是2帧,那么公式就是 7 - @move_speed  发表于 2019-8-13 00:22
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2024-11-23 17:02

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表