09/03/06 22:23:03 k/SdMtBY
>>697
俺の場合、
class CollisionListener {
public:
int getX();
int getY();
int getWidth();
int getHeight();
void touched(CollisionListener* obj) // objは衝突相手
};
class Player : public CollisionListener;
class Bullet : public CollisionListener;
class Enemy : public CollisionListener;
/* 衝突判定のカテゴリを分類する。(例:プレイヤなら敵、敵弾、地面と衝突。敵弾ならプレイヤ、地面と衝突) */
enum CollisionGroup { Player, PlayerBullet, Enemy, EnemyBullet, Ground };
/* 衝突検知を管理するクラス(ほんとは○○マネージャとかいう名前はダメなんだとかうんたらかんたら……) */
class CollisionManager {
public:
void addListener( CollisionGroup type, CollisionListener* listener ); // リスナ(プレイヤ、敵とか)を登録する
void removeListener( CollisionGroup type, CollisionListener* listener ); // 登録を抹消する
void detect(); // 登録されたリスナの衝突を検知し、衝突したならリスナのtouchedメソッドを呼び出す
};