#============================================================================== # 「アニメーション素材のサイズ拡張」(ACE) ver.1.0 # 製作者:奈々(なな) # へぷたなすくろーる http://heptanas.mamagoto.com/ # # ◇使用規約 # 使用される場合はスクリプト作成者として「奈々」を明記して下さい。 # このスクリプトを改変したり、改変したものを配布するなどは自由ですが # その場合も元のスクリプトの作成者として名前は載せて下さい。 # その他、詳しい利用規約はブログを参照して下さい。 # #------------------------------------------------------------------------------ # # アニメーション素材の仕様「1セルが192*192で固定」を変更します。 # # 1セルを任意のサイズ(縦横同じ)とし、それを横に5つ、縦に好きな数並べます。 # このファイル名を「○○」とし、実際にゲームで使われる素材になります。 # # 次に、製作時にツクール上で使用する編集用の素材を用意します。 # ファイル名を「○○_X」とし、実際に使う素材と対応するように # 適当に拡大縮小して、1セルが192*192となるようにして下さい。 # (あくまで目安のダミーなので、画質が多少粗くても問題ないです) # # ツクールのデータベース・アニメーション設定では # この「○○_X」を使って各種設定を行います。 # ゲーム実行時、素材は「○○」のものに置き換えられ # セルの中心が揃うので、感覚的には拡大した感じになります。 # (「○○_X」は配布時に抜いてもOKです) # #============================================================================== #============================================================================== # ■ Cache #------------------------------------------------------------------------------ # 各種グラフィックを読み込み、Bitmap オブジェクトを作成、保持するモジュール # です。読み込みの高速化とメモリ節約のため、作成した Bitmap オブジェクトを内部 # のハッシュに保存し、同じビットマップが再度要求されたときに既存のオブジェクト # を返すようになっています。 #============================================================================== module Cache #-------------------------------------------------------------------------- # ● アニメーション グラフィックの取得 #-------------------------------------------------------------------------- def self.animation(filename, hue) filename[-2, 2] = "" if filename[-2, 2] == "_X" load_bitmap("Graphics/Animations/", filename, hue) end end #============================================================================== # ■ Sprite_Base #------------------------------------------------------------------------------ # アニメーションの表示処理を追加したスプライトのクラスです。 #============================================================================== class Sprite_Base < Sprite #-------------------------------------------------------------------------- # ● アニメーションスプライトの設定 # frame : フレームデータ(RPG::Animation::Frame) #-------------------------------------------------------------------------- def animation_set_sprites(frame) cell_data = frame.cell_data @ani_sprites.each_with_index do |sprite, i| next unless sprite pattern = cell_data[i, 0] if !pattern || pattern < 0 sprite.visible = false next end sprite.bitmap = pattern < 100 ? @ani_bitmap1 : @ani_bitmap2 cell_size = sprite.bitmap.width / 5 sprite.visible = true sprite.src_rect.set(pattern % 5 * cell_size, pattern % 100 / 5 * cell_size, cell_size, cell_size) if @ani_mirror sprite.x = @ani_ox - cell_data[i, 1] sprite.y = @ani_oy + cell_data[i, 2] sprite.angle = (360 - cell_data[i, 4]) sprite.mirror = (cell_data[i, 5] == 0) else sprite.x = @ani_ox + cell_data[i, 1] sprite.y = @ani_oy + cell_data[i, 2] sprite.angle = cell_data[i, 4] sprite.mirror = (cell_data[i, 5] == 1) end sprite.z = self.z + 300 + i sprite.ox = cell_size / 2 sprite.oy = cell_size / 2 sprite.zoom_x = cell_data[i, 3] / 100.0 sprite.zoom_y = cell_data[i, 3] / 100.0 sprite.opacity = cell_data[i, 6] * self.opacity / 255.0 sprite.blend_type = cell_data[i, 7] end end end