//====================================================================
// CTouch クラス
//--------------------------------------------------------------------
// 処理内容 : 当たり判定
// ファイル名 : Touch.cpp
// 作成者 : Copyright(C) 2004 ※※ ※※
//====================================================================
//====================================================================
// プリコンパイル済みヘッダの使用
//====================================================================
#include "..\Header\StdAfx.h"
//====================================================================
// ヘッダファイルのインクルード
//====================================================================
#include "..\Header\Touch.h"
#include "..\Header\InitialSetting.h"
// 自機の弾の当たりの範囲(左上x座標, 左上y座標, 右下x座標, 右下y座標)
const float gc_fJikiShotTouch[2][4] = {
2, 2, 5, 5, // ノーマル弾
2, 14, 5, 17, // 誘導弾
};
//====================================================================
// CTouch クラスの実装
//====================================================================
// 自機の弾と敵機との当たり判定
// 引数、戻値なし。
void CTouch::JikiShotAndEnemy(void)
{
CJikiShot::tagData *pJikiShotData = m_pJikiShot->m_pHead;
CEnemy::tagData *pEnemyData;
while(pJikiShotData)
{
pEnemyData = m_pEnemy->m_pHead;
while(1)
{
if(!pEnemyData)
{
pJikiShotData = pJikiShotData->pNext;
break;
}
// 自機の弾と敵機が当たったかどうか
if(pJikiShotData->vec2.x + gc_fJikiShotTouch[pJikiShotData->nKind][2] > pEnemyData->vec2.x + 13
&& pJikiShotData->vec2.y + gc_fJikiShotTouch[pJikiShotData->nKind][3] > pEnemyData->vec2.y + 10
&& pJikiShotData->vec2.x + gc_fJikiShotTouch[pJikiShotData->nKind][0] < pEnemyData->vec2.x + 35
&& pJikiShotData->vec2.y + gc_fJikiShotTouch[pJikiShotData->nKind][1] < pEnemyData->vec2.y + 25)
{
// 爆発を発生させる
m_pExplosion->Create(pEnemyData->vec2.x + 19, pEnemyData->vec2.y + 17.5f);
// 自機の弾と敵機を削除
pJikiShotData = m_pJikiShot->EraseNext(pJikiShotData);
pEnemyData = m_pEnemy->EraseNext(pEnemyData);
break;
}
pEnemyData = pEnemyData->pNext;
}
}
}
//====================================================================
|