ページ 11

C++でのインターフェースクラスと当たり判定

Posted: 2012年9月20日(木) 17:41
by 無双贄
現在縦STGを作っているのですが、画像のように出てくる登場人物(プレイヤーとエネミー)をまとめるキャラクタークラスというものを作成したいのです。
C#ではインターフェースクラスがあるのでそれを使用すればいいのですがC++ではそのようなクラスは聞いたことがないので何かインターフェースクラスに代わる
クラスを教えてもらえると嬉しいです。

あと、当たり判定の実装をプレイヤーとエネミーから分離させて審判役をさせたいのですが
この場合どうすればいいのかも教えていただけますでしょうか。
よろしくおねがいします

Re: C++でのインターフェースクラスと当たり判定

Posted: 2012年9月21日(金) 18:48
by ISLe
インターフェースについては、純粋仮想関数と呼ばれるメンバ関数について調べたら良いと思います。

更新関数を呼び出すためにキャラクターを管理するリストがあると思いますので、当たり判定の審判役はそこに持たせたら良いのではないでしょうか。

Re: C++でのインターフェースクラスと当たり判定

Posted: 2012年9月21日(金) 23:28
by 無双贄
更新関数を呼び出すためのキャラクターを管理するリストというのは以下のように
抽象キャラクタークラスを持つキャラクター管理クラスを作成して、そこに当たり判定の関数を持たせるという感じでよろしいでしょうか?

Re: C++でのインターフェースクラスと当たり判定

Posted: 2012年9月22日(土) 19:03
by ISLe
無双贄 さんが書きました:更新関数を呼び出すためのキャラクターを管理するリストというのは以下のように
抽象キャラクタークラスを持つキャラクター管理クラスを作成して、そこに当たり判定の関数を持たせるという感じでよろしいでしょうか?
そういう感じで良いと思います。

当たり判定では、重なったら単に消滅する場合もあるし、消滅せず重なり具合によって特定の方向にはじけ飛ぶようにする場合もあると思います。
当たり判定の結果は双方にフィードバックする必要がありますが、キャラクター自身が当たり判定を行うのは避けて外部からキャラクターの順列組み合わせで当たり判定を行い、結果に応じてキャラクターにリアクションを発動させるようにすると汎用性が高まります。

キャラクター自身に当たり判定と同時にリアクションするように実装してしまうと、たくさんのキャラが同時に重なった場合に対応するときなどで困ることになります。