問題の部分は敵の弾に関する部分。
//-------------------------------------------------------------------------------------------------
// ファイル名 : CEnemyBullet.h
// コメント : 各種敵弾情報クラス 弾もまた1種類1キャラクターとして考える
// Copyright : T.Terasaki
// Version : 1.00
//-------------------------------------------------------------------------------------------------
#ifndef CENEMY_BULLET_H
#define CENEMY_BULLET_H
//ライブラリなどの読み込み-------------------------------------------------------------------------
#include"CEnemyBase.h"
//クラス-------------------------------------------------------------------------------------------
//必要に応じて必要個数newやmallocで確保する
class CNormalShot :public CEnemyBulletBase{ //通常ショット(直線)
private:
BulletBase m_Bullet;
public:
void BulletInit(const D3DXVECTOR2& ShotWldPos);
void Update();
void Draw();
D3DXVECTOR2 ReturnBulletPos();
};
class CSniper :public CEnemyBulletBase{ //狙撃弾
private:
BulletBase m_Bullet;
D3DXVECTOR2 m_Move;
float m_Speed;
public:
void BulletInit(const D3DXVECTOR2& ShotWldPos, const D3DXVECTOR2& TargetWldPos);
void Update();
void Draw();
D3DXVECTOR2 ReturnBulletPos();
};
class CSpread :public CEnemyBulletBase{ //拡散ショット(ランダム)
private:
BulletBase m_Bullet[10];
D3DXVECTOR2 m_Move[10];
float m_Speed[10];
public:
void BulletInit(const D3DXVECTOR2& ShotWldPos);
void Update();
void Draw();
D3DXVECTOR2 ReturnBulletPos();
};
class CSpread2 :public CEnemyBulletBase{ //ターゲット方向に拡散ショット
private:
BulletBase m_Bullet[10];
D3DXVECTOR2 m_Move[10];
float m_Speed[10];
public:
void BulletInit(const D3DXVECTOR2& ShotWldPos, const D3DXVECTOR2& TargetWldPos);
void Update();
void Draw();
D3DXVECTOR2 ReturnBulletPos();
};
#endif
肝心の弾の座標がprivateかつセット単位なので当たり判定を弾の種類ごとに用意しなければならず、とても胸糞悪いプログラムに仕上がってしまった。なんで作っているときに気が付かなかったんだろうか?たぶんいつも行き当たりばったりでその場で思いついたも勢いで組んでいるせいだと思う。悪い癖なんだよね。プロジェクトがでかいほどその癖が顕著に出てくる。