当たり判定がうまくいきません
Posted: 2011年5月11日(水) 18:10
自機と敵機の距離が一定以内にならないようにすることを期待して書きました。
いったん敵機との境界線で止まるまではいいのですが、そのごその場に引っ掛かり、敵機の方向に移動するように入力すると
境界線の中に入って敵機に重なってしまい、今度は境界線内に閉じ込められてしまします。
ほんとはグラフィックが重ならないようにしたいのですが・・・
VC++2008,DXライブラリを使用、OSは7です
↓そのクラスと一応使われる構造体も載せときます
いったん敵機との境界線で止まるまではいいのですが、そのごその場に引っ掛かり、敵機の方向に移動するように入力すると
境界線の中に入って敵機に重なってしまい、今度は境界線内に閉じ込められてしまします。
ほんとはグラフィックが重ならないようにしたいのですが・・・
VC++2008,DXライブラリを使用、OSは7です
↓そのクラスと一応使われる構造体も載せときます
void move(struct uni *mainuni,struct enemys *ene){
double x,y,cx,cy,s;
x=0;
y=0;
s=3;
int White;
White=GetColor(255,255,25);
if((mainuni->x>-30)){
if( CheckHitKey( KEY_INPUT_A ) == 1 ){
x=-s;
}
}
if((mainuni->y<570)){
if( CheckHitKey( KEY_INPUT_S ) == 1 ){
y=s;
}
}
if((mainuni->x<770)){
if( CheckHitKey( KEY_INPUT_D ) == 1 ){
x=s;
}
}
if((mainuni->y>-30)){
if( CheckHitKey( KEY_INPUT_W ) == 1 ){
y=-s;
}
}
cx=pow((ene->x-mainuni->x+x),2);
cy=pow((ene->y-mainuni->y+y),2);
if((cx+cy)>=(60*60)){
DrawFormatString(100,140, White , "判定発生" );
mainuni->x=mainuni->x+x;
mainuni->y=mainuni->y+y;
}else{
mainuni->x=mainuni->x-x;
mainuni->y=mainuni->y-y;
}
mainuni->rad=atan2(ene->y-mainuni->y,ene->x-mainuni->x);
DrawRotaGraph( (int)mainuni->x, (int)mainuni->y,1.0,mainuni->rad+PI/2, mainuni->image[0], TRUE );
}
//下は↑で使われる構造体です、一応載せます
struct uni{
int image[5];
double x,y;
double rad;
int HP;
};
struct enemys{
int image[5];
double x,y;
int HP;
};