Project1

标题: RTAB被击时战斗图抖动 [打印本页]

作者: 阿尔卑斯    时间: 2021-3-22 18:26
标题: RTAB被击时战斗图抖动
就是彩虹神剑的被击抖动效果。但现在用的是RTAB,尝试整合中但出现各种问题。这里咨询下有没有已经整合好的脚本,或者讨论一下。
作者: enghao_lim    时间: 2021-3-22 23:31
我没记错RTAB本身有连击插件脚本(就是彩虹神剑,叫法不同),以前在豪华版的整合包里头有,只是那个现在下载不到,看看有没有人有备份之类的。
作者: 阿尔卑斯    时间: 2021-3-23 19:06
enghao_lim 发表于 2021-3-22 23:31
我没记错RTAB本身有连击插件脚本(就是彩虹神剑,叫法不同),以前在豪华版的整合包里头有,只是那个现在下 ...

嗯,是有的。不过那个单纯是连击。没有抖动
作者: st251355    时间: 2021-3-24 21: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腳本龐大,每個人的都不盡相同,在此不提供整套方案,所以請自行添加進自己的專案內吧




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