ページ 1 / 1
[解決済み] 【rgss3】ピクチャを一部分だけ表示
Posted: 2017年1月24日(火) 16:27
by HAL
はじめまして。
自分でも探したり色々いじってみたりはしたのですが、頭不足で上手くいかず…こちらにお願いにまいりました。
標題にもあるように、ピクチャの範囲を指定して表示するスクリプトを探しています。
下画像を例にすると、画像の白枠内だけをマップ画面上に表示するという感じです。

- pic_viewport.jpg (24.05 KiB) 閲覧された回数 4802 回
◆表示したい形状:矩形
◆メニュー画面後 / セーブ→ロード後などにも表示を継続させたい
◆表示範囲(W,H)や表示座標(X,Y)はイベントコマンド「スクリプト」を使う方法などで変更したい
お手数おかけいたしますが、どなたかスクリプトを制作していただける方、
または上記内容についてご教示いただける方がいらっしゃいましたら、何卒よろしくお願い申し上げます。
Re: 【rgss3】ピクチャを一部分だけ表示
Posted: 2017年1月24日(火) 22:11
by faida
はじめまして。
とりあえず作ってみたのでお試しください。
※しょうもないミスにより修正。下の記事からどうぞ。
矩形じゃなきゃ作れんかった……。
Re: 【rgss3】ピクチャを一部分だけ表示
Posted: 2017年1月25日(水) 01:21
by HAL
faidaさん、すばらしいスクリプトをありがとうございます…!!
使い方もとても分かりやすく、本当に嬉しいです!さっそく試してみたところ、範囲を指定して表示することができました。
一点だけ、追加でのお願いになってしまって申し訳ございませんが、
下記についてもご相談させていただいてもよろしいでしょうか…?
◆再表示について
上画像のように繰り返し動作をさせたいのですが、2回め以降が表示できないようでした。
繰り返しの間にメニューを開いたりするとできるようなのですが、自力では何が要因なのか分かりませんでした…。
助けていただいてばかりで恐縮なのですが、上記のように繰り返し動作をさせることは可能でしょうか?
お手数おかけしますが、よろしくお願いいたします。
Re: 【rgss3】ピクチャを一部分だけ表示
Posted: 2017年1月25日(水) 07:46
by faida
れっきとした不具合なので修正しました。
コード: 全て選択
=begin
◆概要
ピクチャの一部を表示します。
◆機能
・$game_system.picture_rect[ピクチャ番号] = [表示x, 表示y, 表示w, 表示h]
をイベントコマンドで行うことにより、そのピクチャ番号のピクチャを
矩形で区切って表示できます。
$game_system.picture_rect[ピクチャ番号] = nil
でそれを解除します。
◆仕様
・ピクチャを変えても継続するので注意。
◆使用上の注意
・★……エイリアス ○……新規定義
◆作者:faida @faida3983
=end
#==============================================================================
# ■ Game_System
#==============================================================================
class Game_System
#--------------------------------------------------------------------------
# ○ 公開インスタンス変数
#--------------------------------------------------------------------------
attr_accessor :picture_rect
#--------------------------------------------------------------------------
# ★ オブジェクト初期化
#--------------------------------------------------------------------------
alias fai_pr_initialize initialize
def initialize
fai_pr_initialize
init_picture_rect
end
#--------------------------------------------------------------------------
# ○ パラメータ初期化
#--------------------------------------------------------------------------
def init_picture_rect
@picture_rect = {}
end
end
#==============================================================================
# ■ Sprite_Picture
#==============================================================================
class Sprite_Picture < Sprite
#--------------------------------------------------------------------------
# ★ 転送元ビットマップの更新
#--------------------------------------------------------------------------
alias fai_pr_update_bitmap update_bitmap
def update_bitmap
$game_system.init_picture_rect if !$game_system.picture_rect
if $game_system.picture_rect[@picture.number]
return if @picture_rect == $game_system.picture_rect[@picture.number]
@picture_rect = $game_system.picture_rect[@picture.number]
x, y = @picture_rect[0], @picture_rect[1]
width, height = @picture_rect[2], @picture_rect[3]
return fai_pr_update_bitmap if !x || !y || !width || !height
pb = Cache.picture(@picture.name)
self.bitmap = Bitmap.new(width, height)
src_rect = Rect.new(x, y, width, height)
self.bitmap.blt(0, 0, pb, src_rect)
else
@picture_rect = nil
fai_pr_update_bitmap
end
end
end
これで繰り返しても大丈夫なはずです。
Re: 【rgss3】ピクチャを一部分だけ表示
Posted: 2017年1月25日(水) 23:42
by HAL
お返事遅くなりましてすみません…!
スクリプトのアップデートありがとうございました。確認したところ、繰り返し動作も含めて問題なく動作しました!
素材の利用条件についても確認しておりますので、こちらぜひ使わせて頂ければと思います。
すばらしいスクリプトを作っていただけて本当に助かりました!重ねて御礼申し上げます。