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

Project1

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

[已经过期] RTAB被击时战斗图抖动

[复制链接]

Lv3.寻梦者

梦石
0
星屑
2633
在线时间
497 小时
注册时间
2012-6-17
帖子
465
跳转到指定楼层
1
发表于 2021-3-22 18:26:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

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

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

x
就是彩虹神剑的被击抖动效果。但现在用的是RTAB,尝试整合中但出现各种问题。这里咨询下有没有已经整合好的脚本,或者讨论一下。

问渠那得清如许为有源头活水来点击这里了解《都市天师》

Lv4.逐梦者

梦石
0
星屑
7981
在线时间
1183 小时
注册时间
2007-7-29
帖子
2055
2
发表于 2021-3-22 23:31:08 | 只看该作者
我没记错RTAB本身有连击插件脚本(就是彩虹神剑,叫法不同),以前在豪华版的整合包里头有,只是那个现在下载不到,看看有没有人有备份之类的。
回复 支持 反对

使用道具 举报

Lv3.寻梦者

梦石
0
星屑
2633
在线时间
497 小时
注册时间
2012-6-17
帖子
465
3
 楼主| 发表于 2021-3-23 19:06:31 | 只看该作者
enghao_lim 发表于 2021-3-22 23:31
我没记错RTAB本身有连击插件脚本(就是彩虹神剑,叫法不同),以前在豪华版的整合包里头有,只是那个现在下 ...

嗯,是有的。不过那个单纯是连击。没有抖动

点评

RTAB注定了兼容性低,尤其是为了实现即时,对animation等几乎重写了,要整合之前还得弄清楚RTAB在做什么,不然一个不好反而搞死了。  发表于 2021-3-24 00:36

问渠那得清如许为有源头活水来点击这里了解《都市天师》
回复 支持 反对

使用道具 举报

Lv4.逐梦者

梦石
0
星屑
9949
在线时间
2485 小时
注册时间
2016-10-2
帖子
31
4
发表于 2021-3-24 21:51:51 | 只看该作者
可以針對RPG::Sprite自行添加抖動的效果
參考animation_process_timing的寫法
假設在指定動畫幀使用了某se音效,名稱為shake

那麼程式上寫成 如果音效名稱等於shake,就去執行抖動效果
抖動時間長度等於關鍵幀的長度、抖動強度等於R、抖動速度等於G、偏移量等於B、型態等於alpha

↓寫在animation_process_timing內或自行定義都可以
  1. if timing.se.name == "System_Shake"
  2.         if hit
  3.           c = timing.flash_color         
  4.             self.shake(timing.flash_duration, c.red, c.green, c.blue , c.alpha)
  5.         end
  6.       end
复制代码


↓這段寫在class內的哪裡都可以
  1. def shake(timing, power, speed, shift, type)
  2.       @_shake_duration = timing
  3.       @shake_count = timing
  4.       @shake_power = 2 * power
  5.       @shake_speed = speed   
  6.       @shake_shift_count = shift == 0 ? 6 : shift
  7.       @shake_type = type
  8.     end
复制代码


接著編寫震動的處理,抖動時間大於0時才做(寫在update內)
用三角函數、正弦實作晃動效果,針對角色圖像的ox、oy做移動,如果型態(alpha)等於0做左右抖動、等於1做上下抖動、大於1上下左右都做
  1. if @shake_count >= 1
  2.         @shake_count -= 1
  3.         width = self.width / 2
  4.         self.ox = @shake_power * Math.sqrt(@shake_count.to_f/@_shake_duration) *
  5.         Math.sin((@_shake_duration-@shake_count) * @shake_speed * Math::PI / @shake_shift_count) +
  6.         width if @shake_type == 0 || @shake_type >= 2
  7.         self.oy = @shake_power * Math.sqrt(@shake_count.to_f/@_shake_duration) *
  8.         Math.sin((@_shake_duration-@shake_count) * @shake_speed * Math::PI / @shake_shift_count) +
  9.         self.src_rect.height if @shake_type == 1 || @shake_type >= 2
  10.       end
复制代码


由於RTAB腳本龐大,每個人的都不盡相同,在此不提供整套方案,所以請自行添加進自己的專案內吧
回复 支持 反对

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2024-11-1 10:27

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

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