Kingdommangas Ninja (niveau 4)
Messages postés : 210 Date d'inscription : 19/12/2015 Jauge LPC :
| Sujet: Effet de lumière sympatique compatible XP/VX/VXAce Lun 28 Déc 2015 - 11:54 | |
| L'utilisation est très simple. Il nécessite cependant 3 images à placer dans la partie "Graphic/System" En appel de script écrire: " start_effect(numéro)" (bien sûr vous mettez un numéro à la place de numéro, vous l'écrivez pas tel quel ) Pour enlever l'effet il faut écrire (en appel de script toujours): " end_effect" pour un arrêt brutal " end_effect_fade" pour un arrêt en douceur J'ai traduit directement les effet de lumière sur le script. D'ailleurs le voici: - Code:
-
=begin RGSS3 ★ 光拡散エフェクト ★ Effet de diffusion de la lumière
光が広がったり、集まったり、降ったりします。 天候と似た使い方を想定しています。 l'utilisation semblable à la météo. イベントコマンドのスクリプトから起動させてください。 commencer à partir de la commande de l'événement dans le script. ● コマンド一覧 ●===Liste des commandes======================================== start_effect(type) -------------------------------------------------------------------- 光拡散エフェクトを開始します。 引数の値によってエフェクトの種類が決定します 1 => lumière du centre vers l'extérieur 2 => Lumière de l'extérieur vers le centre 3 => Tombe vers le centre de l'écran 4 => Tombe vers le bas de l'écran 5 => Du coin haut droite vers le bas gauche 21 => Du bas de l'écran vers le haut en tournoyant 22 => Lumière du bas vers le milieu de l'écran 23 => Spirale du bas vers le haut 31 => Neige ==================================================================== end_effect -------------------------------------------------------------------- Fin de l'effet de l'animation (brutal) ==================================================================== end_effect_fade -------------------------------------------------------------------- Fin de l'effet de l'animation (en fondu) ==================================================================== ver1.10
Last Update : 2012/03/24 03/24 : 雪エフェクトの追加 ----------------------2012-------------------------- 12/17 : RGSS2からの移植 ----------------------2011-------------------------- ろかん http://kaisou-ryouiki.sakura.ne.jp/ =end
$rsi ||= {} $rsi["光拡散エフェクト"] = true
module Reffect @@span = false def initialize(viewport) @sp = [0, 0] # 初期座標 @ma = [0.0, 0.0] # 移動角度(ラジアン) @rd = 0.0 # 初期座標からの半径 super(viewport) self.blend_type = 1 @@span ^= true end def width Graphics.width end def height Graphics.height end def zoom=(value) self.zoom_x = self.zoom_y = value end def setGraphic(filename) self.bitmap = Cache.system(filename) self.ox = self.bitmap.width / 2 self.oy = self.bitmap.height / 2 end def setStartPosition(typeX, typeY) case typeX when 0 # ランダム @sp[0] = rand(width + 100) - 50 when 1 # 画面外(左) @sp[0] = -30 when 2 # 中央 @sp[0] = width / 2 when 3 # 画面外(右) @sp[0] = width + 30 end case typeY when 0 # ランダム @sp[1] = rand(height + 50) - 25 when 1 # 画面外(上) @sp[1] = -30 when 2 # 中央 @sp[1] = height / 2 when 3 # 画面外(下) @sp[1] = height + 30 end self.x = @sp[0] self.y = @sp[1] end def setMoveAngle(ax, ay = ax) @ma[0] = Math.cos(ax * 0.01) @ma[1] = Math.sin(ay * 0.01) end def getX @sp[0] + @rd * @ma[0] end def getY @sp[1] + @rd * @ma[1] end def getZoom (@rd * @ma[1] / width / 1.5 + 0.8) * (self.opacity / 200.0) end end
class Game_Temp #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :r_effect_sprites # 特殊効果スプライト群 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias r_effect_initialize initialize def initialize r_effect_initialize @r_effect_sprites = [] end #-------------------------------------------------------------------------- # ● 特殊効果スプライトの解放 #-------------------------------------------------------------------------- def dispose_r_effect @r_effect_sprites.each{|sprite| sprite.dispose} @r_effect_sprites = [] end end
class Game_System #-------------------------------------------------------------------------- # ● 公開インスタンス変数 #-------------------------------------------------------------------------- attr_accessor :r_effect_type # 特殊効果の種類 #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- alias r_effect_initialize initialize def initialize r_effect_initialize @r_effect_type = 0 end #-------------------------------------------------------------------------- # ● 特殊効果の開始 #-------------------------------------------------------------------------- def start_effect(type) $game_temp.dispose_r_effect if @r_effect_type != type @r_effect_type = type end #-------------------------------------------------------------------------- # ● 特殊効果の終了(瞬時) #-------------------------------------------------------------------------- def end_effect $game_temp.dispose_r_effect @r_effect_type = 0 end #-------------------------------------------------------------------------- # ● 特殊効果の終了(フェード) #-------------------------------------------------------------------------- def end_effect_fade @r_effect_type = 0 end end
class Game_Interpreter #-------------------------------------------------------------------------- # ● 特殊効果の開始 #-------------------------------------------------------------------------- def start_effect(type) $game_system.start_effect(type) end #-------------------------------------------------------------------------- # ● 特殊効果の終了(瞬時) #-------------------------------------------------------------------------- def end_effect $game_system.end_effect end #-------------------------------------------------------------------------- # ● 特殊効果の終了(フェード) #-------------------------------------------------------------------------- def end_effect_fade $game_system.end_effect_fade end end
class Sprite_Reffect_Diffusion < Sprite #-------------------------------------------------------------------------- # ● インクルード Reffect #-------------------------------------------------------------------------- include Reffect #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(viewport) super(viewport) case $game_system.r_effect_type when 1 @rd = rand(width / 3).to_f @moveSpeed = rand(50).next * 0.01 + 0.5 @existCount = rand(100) + 80 setStartPosition(2, 2) setMoveAngle(rand(2 * Math::PI * 100)) setGraphic("RE_001") when 2 @rd = rand(width / 3).to_f + 30.0 @moveSpeed = rand(50).next * -0.01 - 0.5 @existCount = rand(100) + 90 setStartPosition(2, 2) setMoveAngle(rand(2 * Math::PI * 100)) setGraphic("RE_001") when 3 @rd = rand(width / 2).to_f @moveSpeed = rand(50).next * 0.01 + 0.5 @existCount = rand(100) + 80 setStartPosition(2, 1) setMoveAngle(rand(2 * Math::PI * 100), rand(Math::PI * 100)) setGraphic("RE_001") when 4 @rd = rand(width / 2).to_f @moveSpeed = rand(50).next * 0.01 + 0.5 @existCount = rand(100) + 80 setStartPosition(0, 1) setMoveAngle(rand(2 * Math::PI * 100), rand(Math::PI * 100)) setGraphic("RE_001") when 5 @rd = rand(width / 2).to_f @moveSpeed = rand(50).next * 0.01 + 0.5 @existCount = rand(100) + 120 setStartPosition(3, 1) setMoveAngle(rand(Math::PI * 100) + 90, rand(Math::PI * 100)) setGraphic("RE_001") end @maxOpacity = rand(160) + 40 self.opacity = 1 end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update if self.opacity.zero? dispose $game_temp.r_effect_sprites.delete(self) else @existCount -= 1 @rd = [@rd + @moveSpeed, 0.0].max self.x = getX self.y = getY self.zoom = getZoom self.opacity = [self.opacity + (@existCount > 0 ? 1 : -1), @maxOpacity].min end end end
class Sprite_Reffect_Spiral < Sprite #-------------------------------------------------------------------------- # ● インクルード Reffect #-------------------------------------------------------------------------- include Reffect #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(viewport) super(viewport) case $game_system.r_effect_type when 21 @rd = rand(200).next.to_f @moveSpeed = 5.0 - @rd / 50.0 @nextAngle = rand(360).to_f @collapseSpeed = 1 setStartPosition(2, 3) setGraphic("RE_002") when 22 @rd = rand(40).next.to_f @moveSpeed = rand(100).next * 0.01 + 1.0 @nextAngle = rand(360).to_f @collapseSpeed = rand(3).zero? ? 2 : 1 setStartPosition(0, 3) setGraphic("RE_002") when 23 @rd = 180 @moveSpeed = 1.7 @nextAngle = @@span ? 0.0 : 180.0 @collapseSpeed = 0 setStartPosition(2, 3) setGraphic("RE_002") end @floteY = self.y.to_f end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update if self.y <= -self.oy || self.opacity.zero? dispose $game_temp.r_effect_sprites.delete(self) else @nextAngle += [@moveSpeed, 2].min @nextAngle = 0.0 if @nextAngle >= 360 setMoveAngle(@nextAngle * 1.74533) self.x = getX self.y = (@floteY -= @moveSpeed).round self.zoom = getZoom self.opacity -= @collapseSpeed end end end
class Sprite_Reffect_Snow < Sprite #-------------------------------------------------------------------------- # ● インクルード Reffect #-------------------------------------------------------------------------- include Reffect #-------------------------------------------------------------------------- # ● オブジェクト初期化 #-------------------------------------------------------------------------- def initialize(viewport) super(viewport) setStartPosition(0, 1) setGraphic("RE_003") case rand(100) when 0..49 self.zoom = (3 + rand(2)) / 10.0 when 50..89 self.zoom = (6 + rand(2)) / 10.0 when 90..99 self.zoom = (9 + rand(2)) / 10.0 end self.z = self.zoom_x * 10 @moveSpeed = self.zoom_x * 1.6 @floteY = self.y.to_f @rd = rand(10).next.to_f @nextAngle = rand(360).to_f @existCount = 1500 end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- def update if self.y > height || self.opacity.zero? dispose $game_temp.r_effect_sprites.delete(self) else @existCount -= 3 @nextAngle += [@moveSpeed, 2].min @nextAngle = 0.0 if @nextAngle >= 360 setMoveAngle(@nextAngle * 1.74533) self.x = getX self.y = (@floteY += @moveSpeed).round self.opacity = @existCount end end end
class Spriteset_Map @@re_add_count = 0 #-------------------------------------------------------------------------- # ● 解放 #-------------------------------------------------------------------------- alias r_effect_dispose dispose def dispose r_effect_dispose $game_temp.dispose_r_effect end #-------------------------------------------------------------------------- # ● フレーム更新 #-------------------------------------------------------------------------- alias r_effect_update update def update r_effect_update update_r_effect end #-------------------------------------------------------------------------- # ● 特殊エフェクトの更新 #-------------------------------------------------------------------------- def update_r_effect unless $game_system.r_effect_type.zero? if @@re_add_count.zero? case $game_system.r_effect_type when 1..10 sprite = Sprite_Reffect_Diffusion.new(@viewport3) @@re_add_count = 10 when 21..30 sprite = Sprite_Reffect_Spiral.new(@viewport3) @@re_add_count = 10 when 31..40 sprite = Sprite_Reffect_Snow.new(@viewport3) @@re_add_count = 20 end $game_temp.r_effect_sprites << sprite end @@re_add_count -= 1 end $game_temp.r_effect_sprites.each{|sprite| sprite.update} end end Voilà la source -> http://kaisou-ryouiki.sakura.ne.jp/ L'image -> http://kaisou-ryouiki.sakura.ne.jp/material/graphic/RE.zip Et le script original -> http://kaisou-ryouiki.sakura.ne.jp/material/rgss3/r_effect.txt Oh oh oh, c'est pas fini c'est Noël après tout, quelques vidéos qui montre les effets en question https://www.youtube.com/watch?v=XOahRa-thvU&feature=youtu.be https://www.youtube.com/watch?v=_ipHgryBxoE&feature=youtu.be Voilà voilà, bonne fête. |
|
Kasbak Membre V.I.P.
Messages postés : 1356 Date d'inscription : 05/01/2013 Jauge LPC :
| Sujet: Re: Effet de lumière sympatique compatible XP/VX/VXAce Lun 28 Déc 2015 - 18:29 | |
| Ah ouai heureusement y'a la vidéo, je voyais pas ça comme ça, c'est cool comme script merci du partage. |
|