| 赞 | 16  | 
 
| VIP | 0 | 
 
| 好人卡 | 0 | 
 
| 积分 | 101 | 
 
| 经验 | 5631 | 
 
| 最后登录 | 2025-6-14 | 
 
| 在线时间 | 2496 小时 | 
 
 
 
 
 
Lv4.逐梦者 
	- 梦石
 - 0 
 
        - 星屑
 - 10094 
 
        - 在线时间
 - 2496 小时
 
        - 注册时间
 - 2016-10-2
 
        - 帖子
 - 31
 
 
 
 | 
	
可以針對RPG::Sprite自行添加抖動的效果 
參考animation_process_timing的寫法 
假設在指定動畫幀使用了某se音效,名稱為shake 
 
那麼程式上寫成 如果音效名稱等於shake,就去執行抖動效果 
抖動時間長度等於關鍵幀的長度、抖動強度等於R、抖動速度等於G、偏移量等於B、型態等於alpha 
 
↓寫在animation_process_timing內或自行定義都可以 
- if timing.se.name == "System_Shake"
 
 -         if hit
 
 -           c = timing.flash_color          
 
 -             self.shake(timing.flash_duration, c.red, c.green, c.blue , c.alpha) 
 
 -         end
 
 -       end
 
  复制代码 
 
↓這段寫在class內的哪裡都可以 
- def shake(timing, power, speed, shift, type)
 
 -       @_shake_duration = timing
 
 -       @shake_count = timing
 
 -       @shake_power = 2 * power
 
 -       @shake_speed = speed    
 
 -       @shake_shift_count = shift == 0 ? 6 : shift
 
 -       @shake_type = type
 
 -     end
 
  复制代码 
 
接著編寫震動的處理,抖動時間大於0時才做(寫在update內) 
用三角函數、正弦實作晃動效果,針對角色圖像的ox、oy做移動,如果型態(alpha)等於0做左右抖動、等於1做上下抖動、大於1上下左右都做 
- if @shake_count >= 1
 
 -         @shake_count -= 1
 
 -         width = self.width / 2
 
 -         self.ox = @shake_power * Math.sqrt(@shake_count.to_f/@_shake_duration) *
 
 -         Math.sin((@_shake_duration-@shake_count) * @shake_speed * Math::PI / @shake_shift_count) +
 
 -         width if @shake_type == 0 || @shake_type >= 2
 
 -         self.oy = @shake_power * Math.sqrt(@shake_count.to_f/@_shake_duration) *
 
 -         Math.sin((@_shake_duration-@shake_count) * @shake_speed * Math::PI / @shake_shift_count) +
 
 -         self.src_rect.height if @shake_type == 1 || @shake_type >= 2
 
 -       end
 
  复制代码 
 
由於RTAB腳本龐大,每個人的都不盡相同,在此不提供整套方案,所以請自行添加進自己的專案內吧 |   
 
 
 
 |