Windows7, Dxライブラリ, VC2008EE を使用しています。
DXライブラリ置き場様のサンプルプログラム29を元にしています。
マップにコインを配置してキャラとの当たり判定によって消したいのですが、
うまい方法が浮かびません。
キャラとコインの当たり判定は MapHitCheck関数を参考にして作りました。
int CoinHitCheck(float X, float Y, float *MoveX, float *MoveY){
float afX, afY;
afX = X + *MoveX;
afY = Y + *MoveY;
if(GetChipParam(afX,afY) == 2){
coin.lx = (float)((int)afX / CHIP_SIZE)*CHIP_SIZE;
coin.rx = (float)((int)afX / CHIP_SIZE + 1)*CHIP_SIZE;
coin.ty = (float)((int)afY / CHIP_SIZE)*CHIP_SIZE;
coin.by = (float)((int)afY / CHIP_SIZE + 1)*CHIP_SIZE;
if(*MoveY > 0.0f || *MoveY < 0.0f || *MoveX > 0.0f || *MoveX < 0.0f)
return 1;
else
return 0;
}
}
そして描画しているのは
{// マップの描画
int i, j ;
for( i = 0 ; i < MAP_HEIGHT ; i ++ ){
for( j = 0 ; j < MAP_WIDTH ; j ++ ){
switch(MapData[j]){
case 1://1:ブロック
DrawGraph(j*CHIP_SIZE, i*CHIP_SIZE, img_chip[0], true);
break;
case 2:// MapDataが2:コインの場合
if(CoinHitCheck(ch.x, ch.y, &MoveX, &MoveY)==0) //0:当たっていない
DrawGraph(j*CHIP_SIZE, i*CHIP_SIZE, img_chip[1], true);
break;
}
}
}
}の部分です。長いので次に続きます。
