カメラインポーズDLL
※以下は無視して、カメラDLL - 永字八法←こっちを使ってください。
カメラを実現するプラグインを作りました。
http://www.eiji8pou.net/download/screen.zip
使い方
define節で、
setlayer 0,30,"screen.dll"
等とする。一つ目はレイヤー番号、二つ目は書き換えタイミング(ミリ秒)である。
start節で、
lsp 50,":c;>100,80,#FFFFFF",10,10
等として、「カメラ画像」の出力先のスプライトを作る。このスプライトは、":c;"タグかつセルを持たないコピー型ならばなんでもよいが、塗りつぶし長方形を使うのが便利である。
なお、このスプライトに透明度を付加した場合、ちゃんと半透明のホロスクリーンになるし、このスプライトを移動させることもできる。
※ただし、大きさを変更するのは注意が必要。基本的に作ったら触らないでおくのがよい。
lsp 200,"*0" layermessage 0,"50"
スプライト番号200番をカメラレイヤーにして、その映像の出力先を50番のスプライトにする。
これで完成。
概念
レイヤーと結びつけたスプライトは「カメラレイヤー」になり、それよりも奥にある背景画像を重ね合わせた画像を取得する。
「カメラレイヤー」が取得した画像は、layermessageで結びつけた出力先のスプライトに送られる。この時、出力先の大きさに合わせて画面は拡大縮小される。(ただし、アルゴリズムの都合上、拡大は可能だが出力が乱れる。作ってる最中は思いつかなかった)
サンプル1
その実現スクリプト(む式 ver.lua使用)
*define deletemenu setlayer 0,30,"screen.dll" game *start saveoff caption "訪問! 六軒島" setwindow 58,374,22,4,24,22,0,6,1,1,1,#AAAAAA,40,350,600,470 ; 雛見沢部分を作成(スプライト、画面手前の方を使用) lsp 100,":a;bmp\tati\mion\me_waraia2.bmp",0,0 ; 魅音 getspsize 100,%0,%1 amsp 100,640-%0,0 ; 魅音を再配置 lsp 150,":c;bmp\haikei\jinja\ji1.jpg",0,0 ; 神社 ; カメラ作成 lsp 125,":c;>480,360,#FFFFFF",20,20,128 ; カメラの内容の出力先 _lsp 75,"*0" ; カメラの設置場所 layermessage 0,"125" ; 出力先と設置場所をつなぐ print 1 さて。\ end
この例では、カメラレイヤーを手前、出力先レイヤーを奥に置くことで、画面に画面が映る入れ子構造を動的に作成している。
サンプル2
その実現スクリプト(む式 ver.lua使用)
*define deletemenu setlayer 0,30,"screen.dll" game *start saveoff caption "訪問! 六軒島" setwindow 58,374,22,4,24,22,0,6,1,1,1,#AAAAAA,40,350,600,470 ; 雛見沢部分を作成(スプライト、画面手前の方を使用) lsp 100,":a;bmp\tati\mion\me_waraia2.bmp",0,0 ; 魅音 getspsize 100,%0,%1 amsp 100,640-%0,0 ; 魅音を再配置 lsp 101,":c;bmp\haikei\jinja\ji1.jpg",0,0 ; 神社 ; 六軒島部分を作成 lsp 200,":a;bmp\tati\but\1\but_waraia1.bmp",0,0 ; 戦人 lsp 201,":a;bmp\tati\rena\re_kaiib1.bmp",0,0 ; レナ getspsize 201,%0,%1 amsp 201,640-%0,0 ; レナを再配置 lsp 202,":c;bmp\background\forest\forest_s1b.jpg",0,0 ; 入口 ; カメラ作成 lsp 50,":c;>240,180,#FFFFFF",10,10 ; カメラの内容の出力先 _lsp 150,"*0" ; カメラの設置場所 layermessage 0,"50" ; 出力先と設置場所をつなぐ print 1 魅音「現場のレナさーん!」 レナ「はーい! 今日は右代宮戦人(うしろのみやばとら)さんにお越しいただいてまーす!」\ end
こちらはさらに配置に注意が必要。スプライトの重なり具合を見て欲しい。画面奥に六軒島部分を作り、それを雛見沢部分で覆い隠してしまっているが、六軒島部分直前にカメラレイヤーを置き、その出力先を雛見沢部分手前にすることで、ニュース番組やアイドル水着大会と同じような演出にしている。
もちろん、レナや戦人のスプライトを移動させれば、自動的に手前の小画面のレナや戦人も変化する。
技術的な話
スプライトの直接書き換えができるとこんなに楽なんだね!