ページ 1 / 1
マップ上でピクチャーをウィンドウ前に表示したい
Posted: 2021年2月03日(水) 01:28
by Nekoball
はじめまして、ゲーム制作中の者ですが、ご協力いただきたい事があり投稿させてください。
指定したピクチャー番号のピクチャーをウィンドウ前に表示出来るスクリプトを探しています。
ツクマテ内で同じ内容のスクリプトがあり使わせていただきましたが、そのスクリプトを単体で使用しても何故かラグが酷くゲームがカクカクしてしまいます…
別サイト様でバトル用のピクチャウィンドウ前表示スクリプトは問題なく動く為、スクリプト次第ではラグがなくなると思います。宜しければご協力頂けると幸いです!
Re: マップ上でピクチャーをウィンドウ前に表示したい
Posted: 2021年2月05日(金) 04:26
by ショウ
Re: マップ上でピクチャーをウィンドウ前に表示したい
Posted: 2021年3月01日(月) 17:09
by TOMO
あんまり言うのもどうかと思ったけど、
ショウさんのスクリプトにちょっと問題がありそうだったので作ってみました
ビューポートをピクチャに設定するタイミングの辺
コード: 全て選択
class Spriteset_Map
#--------------------------------------------------------------------------
# ● ビューポートの作成
#--------------------------------------------------------------------------
alias tomo_foreground_picture_create_viewports create_viewports
def create_viewports
tomo_foreground_picture_create_viewports
@viewport4 = Viewport.new
@viewport4.z = 300
end
#--------------------------------------------------------------------------
# ● ビューポートの解放
#--------------------------------------------------------------------------
alias tomo_foreground_picture_dispose_viewports dispose_viewports
def dispose_viewports
tomo_foreground_picture_dispose_viewports
@viewport4.dispose
end
#--------------------------------------------------------------------------
# ● ピクチャスプライトの更新
#--------------------------------------------------------------------------
def update_pictures
$game_map.screen.pictures.each do |pic|
case pic.number
when 21..30
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport4, pic)
else
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
end
@picture_sprites[pic.number].update
end
end
#--------------------------------------------------------------------------
# ● ビューポートの更新
#--------------------------------------------------------------------------
alias tomo_foreground_picture_update_viewports update_viewports
def update_viewports
tomo_foreground_picture_update_viewports
@viewport4.color.set($game_map.screen.flash_color)
@viewport4.update
end
end
21~30番が手前に来ます
create_picturesでやってたのをupdate_picturesでやり、
解放&更新処理の追加と、画面のフラッシュの対応もしておきました
ラグに関しては、原因のスクリプトがどれなのか分からないので何とも言えません
(本当にショウさんの?)
ただ、これ以上軽くするのは難しいと思うので、
『別サイト様』とやらのもこんな感じなのかな?
規約に関しては、
一応改変素材なのでショウさんのと同じにします
(改変自由&素材単体での販売禁止)
※おまけ1
競合対策してないupdate_picturesを競合対策したい場合
コード: 全て選択
alias tomo_foreground_picture_update_pictures update_pictures
def update_pictures
$game_map.screen.pictures.each do |pic|
case pic.number
when 21..30
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport4, pic)
end
end
tomo_foreground_picture_update_pictures
end
該当する部分をこちらに差し替えると競合対策されます
(22~32行目辺り)
ただ、ラグが問題だったようなので、
少し重くなるこれにするのはやめておきました
※おまけ2
戦闘画面でも手前に来るようにしたい場合
コード: 全て選択
class Spriteset_Battle
#--------------------------------------------------------------------------
# ● ビューポートの作成
#--------------------------------------------------------------------------
alias tomo_foreground_picture_create_viewports create_viewports
def create_viewports
tomo_foreground_picture_create_viewports
@viewport4 = Viewport.new
@viewport4.z = 300
end
#--------------------------------------------------------------------------
# ● ビューポートの解放
#--------------------------------------------------------------------------
alias tomo_foreground_picture_dispose_viewports dispose_viewports
def dispose_viewports
tomo_foreground_picture_dispose_viewports
@viewport4.dispose
end
#--------------------------------------------------------------------------
# ● ピクチャスプライトの更新
#--------------------------------------------------------------------------
def update_pictures
$game_troop.screen.pictures.each do |pic|
case pic.number
when 21..30
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport4, pic)
else
@picture_sprites[pic.number] ||= Sprite_Picture.new(@viewport2, pic)
end
@picture_sprites[pic.number].update
end
end
#--------------------------------------------------------------------------
# ● ビューポートの更新
#--------------------------------------------------------------------------
alias tomo_foreground_picture_update_viewports update_viewports
def update_viewports
tomo_foreground_picture_update_viewports
@viewport4.color.set($game_troop.screen.flash_color)
@viewport4.update
end
end
3か所変えただけです
(Spriteset_Map→Spriteset_Battle、$game_map→$game_troop)
こっちもおまけ1が使えます
($game_mapを$game_troopにする必要がありますが)
Re: マップ上でピクチャーをウィンドウ前に表示したい
Posted: 2021年3月01日(月) 23:52
by ショウ
直書き&慣れない移植はこういう時あかんね(笑)
ちなみにラグに関してはとりあえず修正前の奴はたしかにちょっとラグってました。
ただ最初に投稿した当時はラグって無かったのでもしかしたら環境によるものも
あるかもしれません。
あとVXでupdate_picturesでやるとくっそ重くなる上ピクチャも荒くなるので
create_picturesを使ったんですがACEとの違いってなんなんでしょうか?
それとも作り方の問題なのかな?
Re: マップ上でピクチャーをウィンドウ前に表示したい
Posted: 2021年3月02日(火) 17:32
by TOMO
VXが最初から0~20番目まで用意されてるのに対し、
VXAceのGame_Picturesは最初は空配列で、
「||=」で後から使う度に追加されます
その為、initializeで実行するcreate_picturesだと、
タイミング的に次マップからになります
Re: マップ上でピクチャーをウィンドウ前に表示したい
Posted: 2021年3月03日(水) 00:14
by ショウ
なるほどそういう事か、勉強になりました。
Re: マップ上でピクチャーをウィンドウ前に表示したい
Posted: 2021年7月03日(土) 20:23
by Nekoball
御二方、お返事いただきありがとうございました!