先週からDirectXライブラリを使い始め、2Dゲームを作り始めたのですが、攻撃判定を持つクラス(弾や斬撃等)を作る所で困っています。
C++の勉強は始めたばかりで、クラスの継承等に関して勘違いが多々あるかもしれませんが、お付き合い頂ければと思います。
具体的な質問の内容は、攻撃判定を持つクラスをどのように作成するべきか、どうすれば効率的に作れるのかが解らない、といった質問です。
class Graph
{
//画像の描画や、キャラチップから作成した画像のIDの管理等を行うGraphクラス。
};
class Object : public Graph//HP・MPを持ち、当たり判定を所有する物体
{
//プレイヤーの移動や2つのObjectクラスの接触判定の確認、HPやMPへの代入等を行うObjectクラス
};
他のオブジェクトのHP等に干渉する(=攻撃判定を持つ)クラス、Actionを作りたいと考えているのですが、どう作成すれば良いのか解りません。
とりあえず、今まで試してみた方法は、まず、Objectクラスを継承したクラスActionを作り、そのクラスを作成するObjectメンバ関数
void Object::Action_Q()
{
Action FireBall = Action(10,Ref_x() + cos(angle * PI / 180.0f)*3,Ref_y() + cos(angle * PI / 180.0f) *3 ,5,100,40,40,4,true,"Action/FireBall1.png",6,3,2,1.0,Ref_angle(),true,false);
}
次に、内部クラスの存在を知り、内部クラスでやればいいのでは、と考え試してみましたが、
class Object : public Graph//HP・MPを持ち、当たり判定を所有する物体
{
//プレイヤーの移動や2つのObjectクラスの接触判定の確認、HPやMPへの代入等を行うObjectクラス
class Action
{
public:
Action(int damage=5,//Actionクラスのメンバ
int x=0, int y=0, int hp=5,int mp=5,int x_size=40,int y_size=40,double move_speed=4,bool collision=true, //Objectクラスのメンバ
char* FileName ="Action/FireBall1.png" , int AllNum=6 , int XNum=3 ,int YNum=2 ,double ext_rate=1.0, double angle = 0,int trans_flag=true,int turn_flag=0);//Graphクラスのメンバ
private:
int damage;
};
};
以上2つの方法(内部クラス・Objectクラス内でActionクラスを作成) といった方法でも宣言のやり方を変えれば目的は達成できるのか、といったことや、
攻撃判定を持つオブジェクトを作るなら他に方法がある、 といった事を教えて頂ければと思い、質問させて頂きました、よろしくお願いします。
ソースコードは、こういったクラスがある、といったことだけを載せましたが、もし全文が必要なようでしたらまた書きます、現在試行錯誤中でソースがごちゃごちゃになってきているので、整えてからになりますが・・・