弾幕STGにおけるあたり判定の実装方法

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
Hiragi(GKUTH)
記事: 167
登録日時: 9年前
住所: 大阪府
連絡を取る:

弾幕STGにおけるあたり判定の実装方法

#1

投稿記事 by Hiragi(GKUTH) » 4年前

いつもお世話になっております。
前回最後に書き込んだ通り、敵の弾とプレイヤーのあたり判定についていくつか悩んでいる点があります。

まず最初にプレイヤーの弾と敵とのあたり判定は
http://bituse.info/game/shot/15
こちらのサイト様をそのまま使いました。 こちらのサイト様が採用している大まかな設計は、
http://bituse.info/game/shot/2
このようになっています。

プレイヤーの弾は配列で管理している(そもそも種類も量もそれほどない)ので、サイト様の方法をほぼそのまま
使用することができました。具体的にはPlayer Enemyクラスにゲッターセッターを作り、Controlクラスであたり判定を行い、
あたっているかどうかをPlayerとEnemyに伝える、のような方法です。

さて、前回のトピックで提案された用に、std::listでの管理をしました。よってこのサイト様と同等の実装ができない(要素を指定できない)ため、
どのように実装しようか悩んでいるところです。一つとして、ControlクラスにShot_tのイテレータを持たせ、EnemyのShot_tの
ポインタのコピーを渡しアクセスする方法、またはstd::listのノードに管理番号を持たせ配列のように疑似的に扱う方法などを考えています。
上記の方法で問題はないでしょうか、あるいは他に何かしら良い(設計)実装方法はないでしょうか?あるいは先の質問と同じようになりますが、あたり判定をどのように実装しているのでしょうか、 
C++に関してはまだ初心者ですので、継承などを使ったことはほとんどありません、
皆さまが行っている実装方法を行うために具体的にC++のなんの知識が必要であるかを教えていただきたいです。

今回、プロジェクトごと上げてみますので、時間がある方や興味のある方は全体の設計として致命的な点などがございましたら、
ご指摘いただければ幸いです。

GitHub公開リポジトリ
https://github.com/Hiragi1585/STG-Progr ... rogramming

今回のトピックに関して関係があるファイルはPlayer.cpp Player.h Enemy.h Enemy.cpp Manager.cpp Manager.hです。
上記のControlクラス = Managerクラスです。

いつも通りとても分かりにくい文章になってしまいましたが、よろしくお願いします。
だいがくせい!

“C言語何でも質問掲示板” へ戻る