敵との当たり判定
現在VisualC++2008でゲームを製作してるんですが
自分と敵との当たり判定がわかりません。
どのようにすればいいか教えてもらえないでしょうかm(_ _)m
#define SCREEN_WIDTH (640) // 画面の横幅
#define SCREEN_HEIGHT (480) // 画面の縦幅
#define CHIP_SIZE (32) // 一つのチップのサイズ
#define MAP_WIDTH (SCREEN_WIDTH / CHIP_SIZE) // マップの横幅
#define MAP_HEIGHT (SCREEN_HEIGHT / CHIP_SIZE) // マップの縦幅
#define CHAR_SIZE (30) // プレイヤーのサイズ
float PlX, PlY ; // プレイヤーの座標(中心座標)
int ActMain( void )
{ // プレイヤーの座標を初期化
PlX = 100.0F ; PlY = 1.0F ;
// マップ
{
int i, j ;
for( i = 0 ; i < MAP_HEIGHT ; i ++ )
{
for( j = 0 ; j < MAP_WIDTH ; j ++ )
{
// 1のところだけ描画
if( MapData[i][j] == 1 )
{
DrawBox( j * CHIP_SIZE, i * CHIP_SIZE,
j * CHIP_SIZE + CHIP_SIZE, i * CHIP_SIZE + CHIP_SIZE,
GetColor( 0, 0, 0 ), TRUE ) ;
}
}
}
}
//プレイヤーの描写
DrawBox( ( int )( PlX - CHAR_SIZE * 0.5F ), ( int )( PlY - CHAR_SIZE * 0.5F ),
( int )( PlX + CHAR_SIZE * 0.5F ) + 1, ( int )( PlY + CHAR_SIZE * 0.5F ) + 1,
GetColor( 255, 0, 0 ), TRUE ) ;
Cr = GetColor( 255 , 255, 255 ) ;
//敵の描写
DrawGraph(teki[0].x,teki[0].y,teki[0].img,TRUE);
//初期化
void SYOKIKA(void){
teki[0].x=500;
teki[0].y=200;
teki[0].img=LoadGraph("red_player.bmp");
//当たり判定をつくったつもりですが反応せず・・・。一応あたったらPlXを0に移動させようとしています。
if(PlX==teki[0].x)
PlX=0;
if(PlX==teki[0].y)
PlX=0;
if(PlY==teki[0].x)
PlX=0;
if(PlY==teki[0].y)
PlX=0;
がソースです(文字数が足りないのであたり判定に関係ありそうな(敵と自分の座標関連)ところだけ抜きました)今のところ敵、自分、マップ表示や自分の移動などはできているのですが、敵に触れても反応せず、ときおり敵のいないまったく関係のない場所でPlXが0に移動したりしてしまいます
ソースみづらくて申し訳ありません。
補足
回答ありがとうございます。 ガイドレイヤー案も考えたのですが これだと物体の大きさが常に一定ならいいのですが 物体の大きさが変わる場合壁にめり込んだり 壁に触れてないのに曲がっていくというふうに 表示されてしまいます。 こうなるとActionscriptでプログラム的に 壁にそって動くという動作をさせるしかないと いうことになってしまい困ったことになって しまいました。