13. マスクとムービー
1.0.3 から、マスクの中だけに別の背景・立ち絵・CG・ムービーを出せるようになりました。 ムービーは、シナリオを止めずに背景の代わり・背景の後ろ・マスクの中で流せます。
まず見本を見てみましょう。
紹介デモ(
紹介デモ(
data0\scenario\feature_demo.txt
)の「② 応用サンプル」→ 6 ページ目の「23. マスクとムービー」で、ここに書いた機能を順に見られます。 Windows / ブラウザ / Android で同じように動きます。
13.1 マスクを作る
マスクは番号 1〜8 で持ちます。作り方は 2 種類です。座標は設計の 1280x720 で、
x
y
は左上です。
| 命令 | すること |
|---|---|
mask_shape 番号 形 x= y= w= h= [r=半径] [soft=ぼかし] |
エンジンが作る形。素材は要りません。形は
rect
(四角)・
round
(角丸)・
circle
(円)・
ellipse
(楕円)。
|
mask_polygon 番号 x,y x,y x,y … [soft=ぼかし] |
エンジンが作る多角形(頂点は 3〜64 個)。 |
mask_image 番号 画像 [x= y= w= h=] [channel=alpha] |
専用のマスク画像。
画像そのものは見えません。
明るい所(
channel=alpha
なら α の濃い所)にだけ中身が出ます。
x y w h
を書かないと画面全体へ引き伸ばします。ルール画像の名前もそのまま使えます。
|
どの命令にも次の指定を足せます。
| 指定 | 意味 |
|---|---|
rot=度 |
回転(四角の中心のまわり) |
opacity=0〜1 |
中身全体の濃さ |
invert=1 |
裏返す(形の外だけ見せる) |
z=bg|stand|cg |
描く段。
bg
は背景の上・立ち絵の下(既定)、
stand
は立ち絵の上、
cg
はイベント CG の上。どれもメッセージウィンドウより下です。
|
13.2 中身を置く
mask_shape 1 circle x=440 y=40 w=400 h=400 soft=6
mask_add 1 bg01b
mask_stand 1 data4/stand/ch01/smile at=center
丸い窓の中に、別の背景と立ち絵が出ます。
mask_clear 1
| 命令 | すること |
|---|---|
mask_add 番号 絵 [x= y= w= h=] [alpha=] |
背景・CG などの絵を足す。
x y w h
を書かないと背景と同じく画面に収めて置く。
|
mask_stand 番号 絵 [at=center|left|right|ml|mr] [x=中心] |
立ち絵の形で足す(足元を画面の下へ)。絵は
data4/stand/ch01/smile
のようにフォルダから書きます。
|
mask_movie 番号 ムービー [loop=] [volume=] |
マスクの中でムービーを流す(13.4)。絵とムービーは足した順に重なります(後から足した物が上)。 |
mask_bind 番号 bg=層 chara=層 sprite=層 cg=1 |
いま出ている背景の層・立ち絵の層・スプライト・イベント CG をマスクで切り抜く。
mask_unbind
でやめる。層の絵を替えても切り抜きは続きます。
|
mask_clear [番号] [items=1] |
マスクを消す。中のムービーも止まります。番号を省くと全部、
items=1
は中の絵だけ消します。
|
mask_bind
を使っている層で、ルール画像の切り替え(
bg
のルール指定)をすると、その切り替えは濃さの変化(クロスフェード)になります。
13.3 マスクを動かす
mask_move 1 x=60 rot=30 time=900 ease=3
wait 950
x y w h rot opacity
のうち、書いた値だけが変わります。
time
はミリ秒です。シナリオは待たずに次へ進むので、待つときは
wait
を書きます。
ease
は 0 直線・1 だんだん速く・2 だんだん遅く・3 両端ゆっくりです。
マスクは画面に固定の窓です。カメラ・画面の揺れで中身は動きますが、窓は動きません。
13.4 シナリオを止めずにムービーを流す
movie_play bgmovie/town_loop target=bg
背景の代わりにムービーが流れています。文章はこのまま進みます。
bg 0 bg01a
下で背景を替えても、ムービーは止まりません。
movie_stop target=bg
target= |
流す場所 | シナリオ |
|---|---|---|
bg |
背景の代わり。背景の層の上・立ち絵の下。下の背景は見えません(替えても構いません)。 | 止めない |
behind |
背景の後ろ。背景の層 0 より下。背景の透明な所や、
mask_bind 番号 bg=0
と
invert=1
で開けた穴から見えます。
|
止めない |
mask:番号 |
マスクの中(
mask_movie 番号 名前
と同じ)。
|
止めない |
front
(省いたときと同じ)
|
全画面の前面(今までの
movie_play
)。メッセージウィンドウを隠します。
|
止めない |
-
bg・behind・mask:の繰り返しの既定は「繰り返す」です(loop=0で 1 回。終わると最後のコマのまま)。文字送り・選択肢・場面の切り替え・スキップ・オートでは止まりません。 -
止めるのは
movie_stop(全部)かmovie_stop target=…(その再生先だけ)です。「はじめから」とタイトルへ戻るときも止まります。 -
x= y= w= h=で置き場所を決められます。書かないと背景と同じく画面に収めて置きます。 -
volume=0〜100は環境設定のムービーの音量に掛ける割合です(既定 100、0 で音なし)。同時に流せるのは 4 本までです。 - 音は 1 本にしてください。Android は音を出せるのが 1 本だけで、全画面の前面のムービーが流れている間はそちらを優先します。ブラウザは最初の操作の前は音なしで流れることがあります。
-
形式は
.mp4(H.264)にしてください(3 環境で共通に使えます)。
背景の層の上にムービーを載せる
bgmovie
は今までどおり使えます(音なし。その層へ別の背景を置くと止まります)。
13.5 システムスクリプトから使う
| 関数 | すること |
|---|---|
Mask.image(番号, 画像[, x, y, w, h[, "alpha"[, 裏返し[, 段]]]]) |
mask_image
と同じ
|
Mask.shape(番号, 形, x, y, w, h[, 半径[, ぼかし[, 裏返し[, 段]]]]) |
mask_shape
と同じ
|
Mask.polygon(番号, "x,y x,y x,y"[, ぼかし[, 裏返し[, 段]]]) |
mask_polygon
と同じ
|
Mask.add(番号, 絵[, x, y, w, h])
/
Mask.addStand(番号, 絵[, 中心のxか"left"など])
/
Mask.clearItems(番号)
|
中身の絵 |
Mask.move(番号, x, y, w, h, 回転, 濃さ, ミリ秒[, 効き]) |
mask_move
と同じ
|
Mask.bind(番号, "bg"|"chara"|"sprite"|"cg", 層)
/
Mask.unbind(種類, 層)
|
mask_bind
・
mask_unbind
と同じ
|
Mask.clear(番号)
/
Mask.clearAll()
/
Mask.exists(番号)
/
Mask.isMoving(番号)
|
消す・問い合わせ |
MovieLayer.play(名前, 再生先[, 繰り返し[, 音量[, x, y, w, h]]]) |
再生先は
"bg"
・
"behind"
・
"mask:1"
。成功で 1
|
MovieLayer.stop([再生先])
/
setVolume(再生先, 音量)
/
isPlaying(再生先)
/
getName(再生先)
|
止める・音量・問い合わせ |
13.6 セーブ・ロードと環境の違い
- マスク(形・位置・中身・結び付け)と、流しているムービー(名前・再生先・繰り返し・音量)はセーブに入り、ロードで元に戻ります。ムービーは頭から流し直します。動いている途中のマスクは、行き先の位置で戻ります。
- サムネイルにはマスクも背景の代わりのムービーも写ります。全画面の前面のムービーは今までどおり写りません。
-
使っているときだけ、セーブデータのブロック
MSK1を足します。使わない作品のセーブデータの中身は今までと同じです。前の版で作ったセーブデータは「マスクもムービーも無い」として読みます。 -
Android の全画面の前面のムービー(
movie_play・target=front)は、ゲームの画面を手放して流すので、その間はメッセージウィンドウを出せません。文章を進めたいときはtarget=bgを使ってください。