2011年4月11日月曜日

2Dシューティング進捗状況(仕様検討等)

今日は夕方からPCを触ることができました。
今までは、ある程度まとめて進捗状況をお知らせしてましたが、今後は雑記を含めて何か書ければいいなと思います。

色々悩んでいた仕様ですが、とりあえず妥協案もいれて決めました。また変更するかもしれませんが、とりあえず今考えているので1面分を作ってみています。

ボタンは3つ使います。

  • ショットボタン(通常)
    いつでも使うことができます。前方向のみに発射できる至ってノーマルなショットです。
  • ショットボタン(強)
    いつでも使うことができます。前方向のみに発射できる至ってノーマルなショットですが、通常のショットよりも威力があります。
    ショットの特徴として、使用中は移動速度が遅くなります。また、画面上のアイテムを自分に引き寄せることができます。
  • ホーミングレーザー
    画面左側のバーの数だけホーミングレーザーを発射できます。最大16個同時に発射できます。発射後、1秒毎に回復していきます。また、敵を倒すとパワーアイテムを落としますので、それを回収することでもホーミングレーザーは回復します。自然回復は遅いので、基本はパワーアイテムを回収することで回復することになります。ホーミングレーザーは照準などはすべて自動で行います。

正直本当に最終的な仕様になるか分かりませんが、決めないと先に進めないのでとりあえずこれで進みたいと思います。一度これで1面分を用意してみて、遊んでもらって何となくこの方向で良いか考えてみるということにしたいと思います。

ゲームの仕様を考えるのは難しいですね。

 

UROBOROSXNA_20110410_01

画面の左側に表示しているのがホーミングレーザーの打てる数です。


プログラムを整理してみました。

今までゲームシーンという中で描画していたのですが、悩んだ末にステージを管理するクラスを用意して、そちらに描画をしてもらうことにしました。というのも、ステージ毎にスクロールするBG枚数を変えたり、ラスタスクロールさせたりとステージごとに結構描画って変わるのではないかなと思ったからです。
普通どういう風にクラス分けするものなんでしょうか。とりあえず、今回の変更により、ステージ毎に表示方法を色々変更できるようになったと思います。

 

後、中ボスやボスなど、それを倒さない限りステージの先に進めないような処理を入れました。どうやって実装したらよいか悩んだんですが、マップにイベントを仕組んで対応できるようにしました。特定の敵を倒すまでは、マップが進めないようにマップを少し巻き戻すような処理を入れました。巻き戻すときに、見た目巻き戻したことが分からないように見た目がおなじ繰り返し背景まで戻すのがポイントだと思います。

こんなの知りたい方が居るのか分かりませんが、何かの参考になるかもしれませんので書いておきます。マップはPlatinumというソフトを使わせて頂いてるのですが、イベント用のレイヤを作りまして、そこにイベントを配置していきます。画面左側のピンクがイベントになります。

イベントは画面に表示されるごとに実行されていきます。画面左下に2つピンクの四角が2つありますが、それがボス登場とイベント、ボス登場前の初期化イベントとなってます。これらが実行されて、ボス登場前にスクロールが早くなったり、画面中央だけ明るくなったりといった処理が行われます。つづいて、画面上側にあるピンクが画面ループするイベントです。ボスが死ぬまでの間このイベントより上に進むことはできないようになっており、ボスが死ぬまでの間、見た目分からないように延々とおなじマップが繰り返し表示されます。

これも一般的な方法なのかどうか分かりませんが、ツクール今夏感じでイベントを設定するみたいなので、たぶん実装方法としてはある程度合ってるんではないかと思います。

UROBOROSXNA_20110410_02

 


CreateOrthographicOffCenter について

以前 CreateOrthographicOffCenter単体で使用するとZ軸が0から-1の範囲になってしまうと言う話をしていましたが、恐らく理由がわかりました。この関数ももともとViewマトリクスと併用することを前提としているのが、おそらくその理由で、Viewマトリクスも単体で計算すると、Z軸がマイナスになるようです。そこでさらにCreateOrthographicOffCenter をかけ合わせることで、Zの値が0~1.0にもどるようです。なので、私のように単体でCreateOrthographicOffCenter を使いたい場合は、自前でZ軸を反転させてあげないとダメじゃないのかなというのが結論になりました。合ってるのかは正直よくわかりません…。
(詳しい方がいらっしゃったら教えていただきたいです。)

0 件のコメント:

コメントを投稿