スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ゲーム制作日記<18> 無限ミミック

op.png



みなさん、こんばんは。
ネコタです。



今回も恒例の『 コモンイベントで作るちょっとしたシステム 』 のご紹介。



今回紹介するのは、名付けて無限ミミックです。


それでは、今回のシステムがどのような挙動をするのか見てみましょう。


tc17-10.png


しばらく待ちます。


tc17-11.png


すると、宝箱が現れました。


tc17-12.png


タイトルからお察しのとおり、宝箱の中身はミミックです。

普通のミミックならここで終わりですが、このシステムには続きがあります。


tc17-13.png


倒されたミミックは、消えてしまいました。


tc17-14.png


しかし、時間が経つと別な場所に勝手に出現します。


tc17-15.png


開けてみたら、やっぱりミミックでした。



このように、倒しても倒しても、別な場所にランダムで現れるミミックです。


普通、ミミックというとモンスターとの戦闘がある罠付きの『宝箱』という印象ですが・・・・・・

この手のミミックの場合は逆で、ちょっと特別なアイテムが手に入るおまけつきの『モンスター』という印象になります。

モンスターなので、中身が必要ないならスルーすればいいんです。

もっとも、出現場所や一度通った場所を覚えていないと、普通の宝箱と勘違いしてしまうでしょう。


こっちの方が、よりミミックらしいと思いませんか?


個人的には、こっちのミミックの方が素敵なので、作ってみたんです。
敵だけに(笑)




それでは。
まずは、必要な物の確認から。


【必須】
リージョン ×1~20個程度(好みの範囲になります)
変数 ×5


【推奨】
コモンイベント ×2




では、準備に入りましょう。


今回のリージョン配置は、このようになっていました。


tc17-4.png


仕組みとしては、このリージョン1~10の中から1か所を選択し、そこに宝箱を出現させるという仕掛けになります。


最初に、出現するリージョン出現時間を設定しておきます。


コモンイベント : 出現リージョン設定
tc17-8.png


今回は出現リージョンの初期設定を乱数1~10に設定しました。



コモンイベント : 出現時間設定
tc17-9.png


今回は100に設定していますが、実際に出現する時間は100+αになります。



これらはコモンイベントでなくても構いませんが、デフォルト設定としてコモンイベントを使って設定しておくと便利です。

テストをしたときに微調整が必要となった場合、一括で修正できた方が便利ですから。



次に、現在プレイヤーがいるマップの大きさを取得します。


コモンイベント : マップの範囲を取得
tc17-5.png


変数の操作 : マップの大きさを取得
tc17-6.png

tc17-7.png


ちょっとだけ、スクリプトを勉強しました。
この通りに書き込めば、マップの大きさを取得できます。

マップの座標は(0,0)から始まるため、それぞれ$gameMap.width()から-1、$gameMap.height()から-1しています。

これもコモンイベントにする必要はありませんし、特に修正の必要もないものですが。

マップの大きさを取得するために毎回書き込む必要があるため、私はコモンイベントにしているだけです。



以上のコモンイベントを、マップに入った瞬間にスタートイベントとして起動させておきます。


さて、これで準備は完了です。
それでは、イベントの中身をみてみましょう。


イベント : ミミック : 1ページ目
tc17-1.png
tc17-2.png
マークからが続きです)


イベント : ミミック : 2ページ目
tc17-3.png



宝箱としての仕様は、2ページ目に書き込みます。
今回はミミックですというアピールだけなので、文章だけ。


イベントの出現に関してが1ページ目の内容となります。


内容の概要は、マップの先頭あるいはランダムの位置から順にリージョンIDを読み取って、指定したリージョンIDが見つかったら、その場所にこのイベントを移動させます。



まず、指定位置の情報取得で、( 変数出現位置X , 変数出現位置Y )のリージョンIDを読み込みます。

これらの変数は、初期状態では(0,0)です。



次に、出現時間が、設定した時間以上の時という条件分岐を組みます。
そして、先ほど取得したリージョンIDが、設定したリージョンIDと一致した時という条件分岐を組みます。


これらの条件を満たしたときに、以下の内容を起動させます。

このイベントを、リージョンIDを設定した位置に移動する。
向きを下向きにする。(追記可能)
次回出現予定地を再設定する。
カウントした時間をにリセットする。
スイッチをONにして、イベントを起動する。



次にある条件分岐は、出現時間までに繰り返す内容となります。
ここの内容で、規定した出現時間までカウントしています。


まず、マップのX軸の範囲変数出現位置Xの値が一致しない場合の条件分岐を組みます。

ちなみに、マップ範囲X変数出現位置Xが一致する場合というのは、変数出現位置Xがマップ右端のX座標と同値である場合を指します。

それ以外の時は、まだ右端まで変数が到達していないため、値を+1して右へ進めます。そして、変数出現時間を1カウント進めます。


出現位置Xがマップ右端まで到達した場合は、に戻します。これで、左端に数値が帰ってきます。時間も1カウント進めておきます。

同時に、今度はマップの下端にいるかを見ていきます。
これが、出現位置Y≠マップY範囲という条件分岐になります。

Y座標についても同様に、下端に到達していない場合はつ下げ、到達したらに戻します。


最後にウエイトを入れることで、出現時間に到達するまでのフレーム時間をある程度操作することができます。

ウエイト数 × マップの横幅 × マップの縦幅 ±α

これが、出現までの時間になります。



内容としては以上です。

これらの操作により、左から右へ順番にリージョンIDを読み込んで、指定リージョンが無ければ1段下に降りて、また左から右へ・・・・・・右下に到達したら、再度左上から順番に見ていく、という操作を永遠と繰り返して目的のリージョンを探します。


PCの環境にもよるかもしれませんが、私のPCでは、ウエイトを入れずにこの操作を50マス行うのに要した時間が1秒かかるかどうかくらい。大体、1マス0.5~1フレームくらいかもしれません。

マップがあまりにも広いと、それだけ時間がかかります。
なので、正確かつ細かい時間操作はちょっと難しいです。


あと、欠点といえば、リージョンIDを結構食ってしまうことです。

それと、場合によっては前回のゲーム制作日記<17> リージョン階層と併せられない部分が出てきます。

リージョンIDをエリアと同一にすれば、エリアの左上端に出現することになります。また、エリア内にリージョンを設定すると、そのマスだけ別エリアとなり不都合が生じるかもしれません。




以上が、今回のシステムの内容でした。

今回は無限ミミックという使い方を紹介しましたが、このシステムにはいくつか応用がありそうです。




ではでは、今日はこの辺で。
ネコタでした。





↓お役に立ちましたら、クリックをお願いします↓
にほんブログ村 ゲームブログへ
にほんブログ村

にほんブログ村 ゲームブログ ゲーム制作へ
にほんブログ村

ブログランキング・にほんブログ村へ
にほんブログ村
スポンサーサイト

コメント

Secret

No title

こんにちわ。
無限ミミックいいですね。
ピラミッドといえばミミックですよねー。
外が宝箱や中がミミックでなくても、
時間経過でランダムに出現するスイッチとかのトリックにしても良さそうですね、この案使わせていただきます笑


No title

御味噌屋さん、いつもありがどうございます。

時間経過で出現するスイッチ、いいですね!
こちらこそ、そのアイディア使わせてもらいます(笑)
プロフィール

猫民のんたん

Author:猫民のんたん

ネコタ:ゲーム作りが趣味の薬剤師。本職とゲーム作りの2足の草鞋を履きこなそうと日々奮闘。

毎週曜日と曜日or曜日に更新予定。


ミノン:ゲーム作り初心者で1児の母。前職はSE/PG。子育てをしながらゲーム作りを行おうと、日々奮闘中。

毎週曜日にブログ更新予定♪

最新記事
最新コメント
月別アーカイブ
カテゴリ
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。