3人称視点
1人称視点
注視(ターゲット)
フリーカメラ
などなど色々なカメラモードがあると思います。
これらを管理するためにカメラクラスにint型のモード変数を用意してるのですが
ゲームメインクラス、自キャラクラス、敵クラス、カメラクラス
色々なところから参照・変更がしたい時が多々あります。
今までは各々クラスにstatic intで変数を持たせて、同じような関数を書いて、下記のように管理してましたが
static void Camera::SetCameMode( const int modeNum )
{
mode = modeNum;
Player::SetCameMode( modeNum );
Enemy::SetCameMode(modeNum);
Main::SetCameMode(modeNum);
}
どうせカメラモード変数自体は唯一だしSingletonで管理しようかなと思って
class SingletonCameraMode{
public:
// 唯一のアクセス経路
static cSingletonCameraMode* GetInstance()
{
// 唯一のインスタンス
static cSingletonCameraMode instance;
return &instance;
}
void SetCameraMode( int mode){ camera_mode = mode; }
int GetCameraMode(){ return camera_mode;}
enum
{
CAMERA_NORMAL, // 通常時
CAMERA_TARGETING, // ターゲッティングモード
CAMERA_FPS, // 一人称カメラ
CAMERA_FIXED = 100
};
private:
// 生成やコピーを禁止する
cSingletonCameraMode(){}
cSingletonCameraMode(const cSingletonCameraMode& rhs);
cSingletonCameraMode& operator=(const cSingletonCameraMode& rhs);
// 共通のカメラモード
int camera_mode;
};
まだまだ勉強したてで不足な部分だらけですが、皆さんはどのように管理してらっしゃるのでしょうか。
よろしければ教えて頂けると嬉しいです。よろしくお願いします。