#==============================================================================
# 「アニメーション素材のサイズ拡張」(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