スポンサーサイト

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

【ゲーム開発】描画マネージャとボスの攻撃

描画マネージャを作ろうと言う事で奮闘した結果、
描画を切り離すということが如何に難しいかを痛感致しました。


オブジェクト自体は std::list<CObjBase*> としてリストで管理しようとしてます。
オブジェクトは、描画するためのクラスを継承させ、
コンストラクタでもなんでもいいので、初期化のタイミングでリストに登録出来る
Register(CObjBase *pObj) メソッドでも用意して登録します。

リストに新しいオブジェクトを push_back() していきますので
iterator を使えば、(*It)->Draw() のような感じで
begin()~end() まで登録順に描画が出来ると言う仕組み自体は一応出来ました。


この仕組みを使えば生成するだけで勝手に描画マネージャに登録され、
描画する必要がなくなれば勝手にリストから外れてくれる(オブジェクト自身が教えるようにしている)
という機能も実装できましたし、
描画するオブジェクトはマネージャクラスの Update メソッドを呼びさえすれば描画されます。

とりあえず描画部分を切り離すことには成功しました。

しかし、push_back () していくのでこのオブジェクトは常に最前面でいて欲しい!
そんな場合、新しく生成したオブジェクトのプライオリティを
その最前面のオブジェクトよりも後ろに描画しないといけなくなった所で躓きました。

単純に push_front() をしてしまうと一番奥に描画される事になりますのでこれは実装するまでもなくアウツ。
じゃあ insert() をしてリストの間に挟んでしまえばどうだろうか?と考えました。

しかし、今後どうなるか解らない描画オブジェクトに対し、
登録の度に「あるオブジェクトよりも前に描画するか?」なんて管理してると
結局使いにくいものになってしまうな~と思い結構難航してます。

更に、今はそれが最前面だけど、このシーンではそれよりも最前面に描画したくなる可能性だってある訳で
切り離すこと自体は出来ましたが、実際管理する所がめちゃくちゃ厄介です。

アレをやるとこっちが駄目で、それを補強しようとするとどこか綻んでるような
そんなもどかしい気持ちです・・・。
こういうのも上手い事実装する方法があるんだろうなと思い試行錯誤を重ねてます。


と言う訳で一回、描画マネージャは諦め、今まで通りの方法で各オブジェクトが責任を持って
Draw メソッドを呼ぶ形に戻しました。
これはこれでいいんですけどね。
また今度挑戦してみようと思ってます。



もう一つ、ボスの流れ(HPが0なら次の攻撃へ)、
自機のHPがなくなったら残機が減り(内部的に減ってるので見た目ではまだ解りませんが)
残機が0になると強制的にタイトルへ移行するようにしてます。

動画を撮ってみました。

音楽はこちらのサイト様よりお借りしております。
Wingless Seraph[ ユーフルカ様 ]


ボスの攻撃パターンもある程度作らないといけないので
どうしていこうかな・・・。
今年中に完成とはいかないまでも遊べる形にはなりそうな気配はあるのでもうひと踏ん張り><
勿論モチベーションがなくなれば一気に停滞しますけどw
とにかく頑張ろう。

この記事へのコメント

トラックバック

URL :

検索フォーム
プロフィール

DVDM

Author:DVDM
自作ゲームの開発過程ブログ。
赤髪愛なら誰にも負けない。

 
Pixiv バナー


ブロとも申請フォーム
最新記事
カテゴリ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
ブロとも一覧
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。