作成例2 タイル編
MSR TOP
MUGENのステージ作成例
上へ
JMH さん
まぁ、こんな感じで記述すれば、ちと処理も軽くなる?かなぁ?


以上、PosSet応用編でした。

元ネタはこちら

こんどは、ちゃんと表示

出来てるみたいですね。











じゃあ、これならどうでしょう?(間隔はいいかげんです)

[BG 01];;アンドア・ジェネシス
type = anim
ActionNo = 1
layerNo = 0
start = 0,0
delta = 1
trans = None
mask = 1
id=1
[Begin action 1]
2,2, 0,0, 20
2,5, 0,0, 20

[BG 01];;アンドア・ジェネシス
type = anim
ActionNo = 2
layerNo = 0
start = 320,0
delta = 1
trans = None
mask = 1
id=2


[Begin action 2]
2,2, 0,0, 20
2,5, 0,0, 20

[BG 01];;アンドア・ジェネシス
type = anim
ActionNo = 3
layerNo = 0
start = 640,0
delta = 1
trans = None
mask = 1
id=3


[Begin action 3]
2,2, 0,0, 20
2,5, 0,0, 20


[bgctrldef 1]

CtrlID = 1
loopTime = 450

[BGCtrl 10]
type = posset
time = 0
x=0

[BGCtrl 1]
type = velset
time = 0
x = -2


[bgctrldef 2]

CtrlID = 2
loopTime = 900

[BGCtrl 10]
type = posset
time = 0
x=0

[BGCtrl 1]
type = velset
time = 0
x = -2

[bgctrldef 3]

CtrlID = 3
loopTime = 1350

[BGCtrl 10]
type = posset
time = 0
x=0

[BGCtrl 1]
type = velset
time = 0
x = -2


今度はどうでしょうか?

ん??バグってるのが

おわかりでしょうか??


そうです、アニメかけると処理

が追いつかなくなりこのような

2つスプライトが重なってくるなど・・。

ほかの処理を重くする原因と

重なると「消える」という現象

に陥るみたいです。(処理落ち)
[BG 1-1];;;背景
type = normal
spriteno = 1, 1
layerno = 0
start = 0,0
delta = 1
trans = none
mask = 1


[BG 01]                   ;;アンドア・ジェネシス
type =
anim
ActionNo = 1
layerNo = 0
start = 0,0
delta = 1
trans = None
mask = 1
tile = 1,0
tilespacing = 320,0       ;タイル化した画像同士の間隔。
velocity = -2,0            ;画像の移動速度

[Begin action 1]
2,2, 0,0, 20
2,5, 0,0, 20



今度は同じネタでanimしながら、タイルしてみましょう。

ちゃんとタイル表示できてますね。

[BG 1-1];;;背景
type = normal
spriteno = 1, 1
layerno = 0
start = 0,0
delta = 1
trans = none
mask = 1


[BG 1-1];                  ;;アンドア・ジェネシス
type = normal
spriteno = 2, 2
layerno = 0
start = 0,0
delta = 1
trans = none
mask = 1

tile = 1,0
tilespacing = 640,0       ;タイル化した画像同士の間隔。
velocity = -2,0            ;画像の移動速度


*******タイルに関する考察*******
実験としてこういうステージを作ってみました。
tipe=normalでの200*200のアンドア・ジェネシスのタイルループ
                 

[BGCtrl]  type = Possetの応用

[BG 9-1];;支柱奥
type = normal
spriteno = 9, 1
layerno = 0
start = 20,0                 ;;;登録位置は画面外にしてある。
delta = 1,1                  ;;;;視差ほんとは少しぐらいあるがあんまり意味がないので1
trans = None
mask = 1
ID=3

[BG 9-1];;支柱前
type = normal
spriteno = 9, 2
layerno = 1                 ;;;キャラより手前なので1
start = -120,0
delta = 1,1
trans = None
mask = 1
ID=4




;;支柱


[bgctrldef 1]
looptime = 100       ;;支柱が右画面外から左画面外に通りすぎる時間(ループ)
ctrlid =
3,4


;;;
支柱奥
[bgctrl 1]
type = posset       ;;ループしてtimeが0の時点で位置が画面右外(初期位置)
time = 0
x = 0
ctrlid =
3

[bgctrl 1-1]
type = velset
time = 1
x = -10           ;;timeが1になると左に10の速さですすむ。
ctrlid =
3
;------------------
;;
;支柱手前
[BGCtrl 2-1]
type = posset
time = 0
x = 280           ;;;time=0で奥支柱よりも右にセットされる。
ctrlid =
4

[BGCtrl 2-4]
type = velset
time = 1
x = -12                      ;;time=1で左に12の速さですすむ。
ctrlid =
4

;;
この感じで右画面外から左に進んでゆき、左画面外になったら
;リセットされて、また右から左に進んでいきます。
;この書き方なら、奥の支柱を手前が追い越すことはありません。

さて、まずこちらの画像をご覧ください。
画面はCVS2000proのトレインステージですが、
設定は列車の上での戦いという設定になっています。


足場の奥と手前を通り過ぎる、ポール?にご注目ください。

キャラ位置より手前、と奥の支柱の速度は違います。

奥より手前の方が速度を速めに設定してあります。(自然にみえる)


で、この場合の記述の仕方です。

ぱっと見、「"タイル"かけてループすりゃいいんじゃないの?」と思いがち

ですが、この場合支柱が二本
速度が違うというのがネックになってきます。

タイリングした場合、手前の支柱のほうが速度が速いのですから

何回もループするといずれ、
追い越してしまう、ということになります。

そこで、書き方です。
作成例