上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
うねうね背景はもう見飽きた!
うねうねする速度を上げ過ぎると酔って気持ち悪い!

そんなあなたへの処方箋。1枚絵を背景にするスクリプトその2です。
苦労したらその分だけ記事が長くなるのがextrierクオリティ。

ついつい前置きが冗長になりがちなので、サクっと本題に入って行きたいと思います。

まず、今居るマップがフィールドか否かを判別します。

過去(ツクール2000)での経験から、マップIDを取得すればよいと判断。

id = $game_map.map_id


これで今居るマップIDが取得できます。
無題3

今回、フィールドのマップIDは1なので以下のように定数を宣言します。

MAP_FIELD = 1



次に、今度は今居るタイルIDを取得します。

tile = $game_map.data[$game_player.x, $game_player.y,0]  #タイルIDを取得



しかし、先述のとおりこれだけは今居る地形が草原か?森か?の判断が出来ません。
と言うわけで、半透明にすべきか否か、これで以って草原/森の判断を強引におこないます。

if $game_map.bush?($game_player.x, $game_player.y)


1なら半透明、つまり森。
0なら半透明としない、つまり草原となります。


ここまでで判別方法はおしまい。
次に、実際に背景に画像を表示する処理を作成します。

Spriteset_Battle 
└def create_battleback

bitmap = Bitmap.new(640, 480)


この箇所を

bitmap = Bitmap.new("Graphics/Panorama/back00.bmp")


このように、直接ファイル名を指定してやります。直接指定しなくても画像ファイルのテーブルを用意したほうがいいかも知れませんが、今回は取り敢えずめんどかったのでやってません。


bitmap.stretch_blt(bitmap.rect, source, source.rect)
bitmap.radial_blur(90, 2)
@battleback_sprite.ox = 320
@battleback_sprite.oy = 240
@battleback_sprite.x = 272
@battleback_sprite.y = 176
@battleback_sprite.wave_amp = 8
@battleback_sprite.wave_length =240
@battleback_sprite.wave_speed = 120


この辺りが、いわばうねうねさせる、もしくは背景にぼかしを入れる処理に当たりますので、すべて消去orコメントアウトします。

さらに、戦闘シーンの背景の中央当たりに出ている、黒い円形の影らしきものも表示させないようにしましょう。

Spriteset_Battle 
└create_battlefloor

@battlefloor_sprite.bitmap = Cache.system("BattleFloor")
@battlefloor_sprite.x = 0
@battlefloor_sprite.y = 192
@battlefloor_sprite.z = 1
@battlefloor_sprite.opacity = 128


この当たりをサクっと削除。うねうね背景時には残しておきたいのであれば、こちらでもやはり場合わけをしときましょう。


以上、ここまでやってやれば戦闘シーンに背景を付けられるようになると思います。
なお、「レクトール~」のおまけにも確か同じことが出来るスクリプトがあったと思いますが、理解不能だったので見ていません。あっちのほうが合理的かもしれませぬ。。。

一応、一から自分で考えたことに意義がある!ということで・・・?

参考までに、下記にextrierが作ったスクリプトを添付しておきます。
不具合が出ても責任を取りませんので悪しからず。

戦闘シーンに背景を付けるスクリプト(参考)
スポンサーサイト

テーマ : ゲーム製作 関連 - ジャンル : ゲーム

コメントの投稿

URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック

この記事にトラックバックする(FC2ブログユーザー)
powered by
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。