いま自分は2Dのゲームを作っているのですが弾が出るようになったんですけど敵に当たり判定がないため敵を倒すことが出来ません。
どうやったら敵に当たり判定を付けることができるのでしょうか?
どうしても、わからないので質問しました。
宜しくお願いします!
プレイヤーは攻撃したり、ジャンプわ出来るようになってます。
いちよう、足場も作ったりしてみました。
ソースコードも載せるのでお願いします。
プログラムはガチ初心者ですので、その辺わかってくれると助かります。。
/////////////////////////////////////////////
///...インクルード
/////////////////////////////////////////////
#include "FPSsample.h"
#include "enemy.h"
#include "bullet.h"
////////////////////////////////////////////
///...マクロ定義(defineなど)
////////////////////////////////////////////
#define MAX_ENEMY (100)
ENEMY g_aEnemy[MAX_ENEMY];
/*-----------------------------------
関数名 :InitEnemy
機能 :
引数 :void
戻り値 :int
-----------------------------------*/
void InitEnemy()
{
for(int nLoop = 0 ; nLoop < MAX_ENEMY ; nLoop++ )//敵の数だけループ
{
g_aEnemy[nLoop].bUse = false;
//その他は全て0にする
}
SetEnemy(10.0f , 21.0f , 0); //敵作成
SetEnemy(52.0f , 11.0f , 0);
SetEnemy(43.0f , 12.0f , 0);
SetEnemy(44.0f , 11.0f , 0);
SetEnemy(45.0f , 23.0f , 0);
}
/*-----------------------------------
関数名 :UninitEnemy
機能 :
引数 :void
戻り値 :int
-----------------------------------*/
void UninitEnemy()
{
;
}
/*-----------------------------------
関数名 :UpdateEnemy
機能 :
引数 :void
戻り値 :int
-----------------------------------*/
void UpdateEnemy()
{
for(int nLoop = 0 ; nLoop < MAX_ENEMY ; nLoop++ )//敵の数だけループ
{
if(g_aEnemy[nLoop].bUse)//構造体が使用中
{
if((rand()%100) == 10)
{
SetBullet(g_aEnemy[nLoop].fPosX + g_aEnemy[nLoop].fMoveX + (g_aEnemy[nLoop].fDirect *2)
, g_aEnemy[nLoop].fPosY , -0.6f, 0.0f , BULLETTYPE_ENEMY);
}
}
}
}
/*-----------------------------------
関数名 :DrawEnemy
機能 :敵の表示
引数 :void
戻り値 :int
-----------------------------------*/
void DrawEnemy()
{
for(int nLoop = 0 ; nLoop < MAX_ENEMY ; nLoop++)//敵の数だけループ
{
if(g_aEnemy[nLoop].bUse)//構造体使用中
{
COLOR(BLUE);
LOCATE((int)g_aEnemy[nLoop].fPosXOId, (int)g_aEnemy[nLoop].fPosYOId);//前回の位置
printf(" ");
LOCATE((int)g_aEnemy[nLoop].fPosXOId, (int)g_aEnemy[nLoop].fPosYOId - 1);//前回の位置の一つ上
printf(" ");
LOCATE((int)g_aEnemy[nLoop].fPosX, (int)g_aEnemy[nLoop].fPosY);//現在位置
printf("");
LOCATE((int)g_aEnemy[nLoop].fPosX, (int)g_aEnemy[nLoop].fPosY - 1);//現在位置の一つ上
printf("H");
}
}
}
/*-----------------------------------
関数名 :SetEnemy
機能 :
引数 :void
戻り値 :int
-----------------------------------*/
void SetEnemy(float posx ,float posy , int type)
{
for(int nLoop = 0 ; nLoop < MAX_ENEMY ; nLoop++ )//敵の数ループ
{
if(!g_aEnemy[nLoop].bUse)//構造体未使用
{
g_aEnemy[nLoop].fPosX = posx;
g_aEnemy[nLoop].fPosY = posy;
g_aEnemy[nLoop].fPosXOId = posx;
g_aEnemy[nLoop].fPosYOId = posy;
g_aEnemy[nLoop].fMoveX = 0;
g_aEnemy[nLoop].fMoveY = 0;
g_aEnemy[nLoop].fDirect = -1.0; //とりあえず左向き固定
g_aEnemy[nLoop].nType = type;
g_aEnemy[nLoop].bUse = true;
break;//構造体を作ったら終了
}
}
}
/*-----------------------------------
関数名 :fDirect
機能 :敵の当たり判定
引数 :void
戻り値 :int
-----------------------------------*/
void DirectEnemy();