赞 | 0 |
VIP | 46 |
好人卡 | 26 |
积分 | 7 |
经验 | 76056 |
最后登录 | 2024-11-23 |
在线时间 | 2658 小时 |
Lv2.观梦者
- 梦石
- 0
- 星屑
- 653
- 在线时间
- 2658 小时
- 注册时间
- 2010-6-28
- 帖子
- 1361
|
本帖最后由 我的米呀 于 2011-12-1 17:11 编辑
脚本本体:- #==============================================================================
- # ★RGSS2
- # STR39_キャラクター残像演出VX v0.8 08/07/28
- #
- # ◇必須スクリプト STEMB_マップエフェクトベース
- # ・キャラクタースプライトに残像を発生させます。
- # ・連続で発生させる場合は並列処理のイベントに貼り付ける等してください。
- #
- if false
- # 以下をコマンドのスクリプト等に貼り付けて残像発生
- ef = $game_temp.streffect
- id = 0 # イベントID(0でプレイヤー)
- sp = 20 # 表示時間(1/60sec)
- op = 192 # 透明度(0で元の透明度の66%)
- bl = 1 # 合成方法(0=通常,1=加算,2=減算)
- xyz = [0,0,0]# 座標修正[x,y,z]通常は0
- ef.push(CharaShadow00.new(id,sp,op,bl,xyz))
- # 解説なしタイプ
- id=0;sp=20;op=192;bl=1;xyz=[0,0,0]
- ef = $game_temp.streffect
- ef.push(CharaShadow00.new(id,sp,op,bl,xyz))
- # ここまで
- end
- #==============================================================================
- # ★このスクリプトの機能を有効にする
- if true
- #==============================================================================
- # ■ CharaShadow00
- #==============================================================================
- class CharaShadow00 < Sprite
- # 透明度を0にした時の透明度修正
- AUTO = 0.66
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- def initialize(id=0,sp=20,op=192,bl=1,xyz=[0,0,0])
- super()
- # 対象のキャラクターの決定
- if id != 0
- chara = $game_map.events[id]
- else
- chara = $game_player
- end
- # XYZ座標の設定
- @rx = chara.real_x
- @ry = chara.real_y_cs
- @xyz = xyz
- @xyz[1] -= 4 unless chara.object?
- self.z = chara.screen_z - 1 + @xyz[2]
- # 透明度・表示時間・合成方法
- if op != 0
- @opacity = op
- else
- @opacity = chara.opacity * AUTO
- end
- self.opacity = @opacity
- @speed = @opacity * 1.0 / sp
- self.blend_type = bl
- # いろいろ設定・更新
- set(chara, self)
- update
- end
- #--------------------------------------------------------------------------
- # ● フレーム更新
- #--------------------------------------------------------------------------
- def update
- self.x = ($game_map.adjust_x(@rx) + 8007) / 8 - 1000 + 16 + @xyz[0]
- self.y = ($game_map.adjust_y(@ry) + 8007) / 8 - 1000 + 32 + @xyz[1]
- self.opacity = @opacity
- @opacity -= @speed
- dispose if self.opacity <= 0 # 透明になったら解放
- end
- #--------------------------------------------------------------------------
- # ● いろいろ設定
- #--------------------------------------------------------------------------
- def set(chara, sprite)
- tile_id = chara.tile_id
- if tile_id > 0
- sprite.bitmap = tileset_bitmap(tile_id)
- sprite.src_rect.set((tile_id / 128 % 2 * 8 + tile_id % 8) * 32,
- tile_id % 256 / 8 % 16 * 32, 32, 32)
- sprite.ox = 16 ; sprite.oy = 32
- else
- character_name = chara.character_name
- sprite.bitmap = Cache.character(character_name)
- sign = character_name[/^[\!\$]./]
- if sign != nil and sign.include?(')
- cw = sprite.bitmap.width / 3 ; ch = sprite.bitmap.height / 4
- else
- cw = sprite.bitmap.width / 12 ; ch = sprite.bitmap.height / 8
- end
- sprite.ox = cw / 2 ; sprite.oy = ch
- index = chara.character_index
- pattern = chara.pattern < 3 ? chara.pattern : 1
- sprite.src_rect.set((index % 4 * 3 + pattern) * cw,
- (index / 4 * 4 + (chara.direction - 2) / 2) * ch,
- cw, ch)
- end
- end
- #--------------------------------------------------------------------------
- # ● 指定されたタイルが含まれるタイルセット画像の取得
- #--------------------------------------------------------------------------
- def tileset_bitmap(tile_id)
- set_number = tile_id / 256
- return Cache.system("TileB") if set_number == 0
- return Cache.system("TileC") if set_number == 1
- return Cache.system("TileD") if set_number == 2
- return Cache.system("TileE") if set_number == 3
- return nil
- end
- end
- #==============================================================================
- # ■ Game_Character
- #==============================================================================
- class Game_Character
- #--------------------------------------------------------------------------
- # ● 画面 Y 座標の取得(追加)
- #--------------------------------------------------------------------------
- def real_y_cs
- if jumping?
- if @jump_count >= @jump_peak
- n = @jump_count - @jump_peak
- else
- n = @jump_peak - @jump_count
- end
- return @real_y - (@jump_peak * @jump_peak - n * n) * 4
- else
- return @real_y
- end
- end
- end
- #
- end
复制代码 ================================================================
事件中用此脚本,并行后出现残影。- id=0;sp=20;op=192;bl=1;xyz=[0,0,0]
- ef = $game_temp.streffect
- ef.push(CharaShadow00.new(id,sp,op,bl,xyz))
复制代码 ========================================================================
忘记了= =补上,在脚本本体前先插入这个脚本- #==============================================================================
- # ★RGSS2
- # STEMB_マップエフェクトベース v0.8
- #
- # ・エフェクト表示のための配列定義、フレーム更新、ビューポート関連付け
- #
- #==============================================================================
- # ■ Game_Temp
- #==============================================================================
- class Game_Temp
- #--------------------------------------------------------------------------
- # ● 公開インスタンス変数
- #--------------------------------------------------------------------------
- attr_accessor :streffect
- #--------------------------------------------------------------------------
- # ● オブジェクト初期化
- #--------------------------------------------------------------------------
- alias initialize_stref initialize
- def initialize
- initialize_stref
- @streffect = []
- end
- end
- #==============================================================================
- # ■ Spriteset_Map
- #==============================================================================
- class Spriteset_Map
- #--------------------------------------------------------------------------
- # ● エフェクトの作成
- #--------------------------------------------------------------------------
- def create_streffect
- $game_temp.streffect = []
- end
- #--------------------------------------------------------------------------
- # ● エフェクトの解放
- #--------------------------------------------------------------------------
- def dispose_streffect
- for i in 0...$game_temp.streffect.size
- $game_temp.streffect[i].dispose if $game_temp.streffect[i] != nil
- end
- $game_temp.streffect = []
- end
- #--------------------------------------------------------------------------
- # ● エフェクトの更新
- #--------------------------------------------------------------------------
- def update_streffect
- for i in 0...$game_temp.streffect.size
- if $game_temp.streffect[i] != nil
- $game_temp.streffect[i].viewport = @viewport1
- $game_temp.streffect[i].update
- $game_temp.streffect.delete_at(i) if $game_temp.streffect[i].disposed?
- end
- end
- end
- #--------------------------------------------------------------------------
- # ★ エイリアス
- #--------------------------------------------------------------------------
- alias create_parallax_stref create_parallax
- def create_parallax
- create_parallax_stref
- create_streffect
- end
- alias dispose_stref dispose
- def dispose
- dispose_streffect
- dispose_stref
- end
- alias update_stref update
- def update
- update_stref
- update_streffect
- end
- end
复制代码 |
|