当たり判定について
Posted: 2009年11月24日(火) 20:57
今プチSTGを作っています。
当たり判定を実装しようとしたんですが、うまくいきません。
ゲームプログラミングの館のs11を参考にしましたが、反応がありません。
質問ばかりだとバグ取り能力が育たないんだろうな・・・orz
↓プログラムコード
当たり判定を実装しようとしたんですが、うまくいきません。
ゲームプログラミングの館のs11を参考にしましたが、反応がありません。
質問ばかりだとバグ取り能力が育たないんだろうな・・・orz
↓プログラムコード
//コードが長すぎて投稿できないので前板参照「弾の描画について 2」
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
Ziki.x =320; //自機に座標を代入
Ziki.y =240;
Ziki.hp =Zhp;
Ziki.Mhp=Zhp;
Teki[0].x =640;
Teki[0].y =120;
Teki[0].hp =Thp;
Teki[0].Mhp=Thp;
int Ziki_image[Z_image],Teki_image[T_image],Count;
if( ChangeWindowMode(TRUE) != DX_CHANGESCREEN_OK || DxLib_Init() == -1 ) return -1; //ウィンドウ化と初期化処理
/////////////////////////////////////////////////////////////////////////
SetDrawScreen(DX_SCREEN_BACK); //裏画面に設定
LoadDivGraph("Ziki.png",2,2,1,20,26,Ziki_image); //画像を読み込ませる
LoadDivGraph("Teki.png",2,2,1,20,26,Teki_image);
for(int i=0; i<Tamax; i++){
Tama.Flag =0;
Tama.x =Ziki.x;
Tama.y =Ziki.y;
T_Tama.TFlag=0;
T_Tama.x =Teki[0].x;
T_Tama.y =Teki[0].y;
}
int Range=Ziki.Range+Teki[0].Range;
/////////////////////////////////////////////////////////////////////////
while(!ProcessMessage() && !ClearDrawScreen() && !GetHitKeyStateAll( Key ) && !Key[KEY_INPUT_ESCAPE]){
int X=Ziki.x-Teki[0].x,Y=Ziki.y-Teki[0].y;
int Red=GetColor(255,0,0),Blue=GetColor(0,255,255);
Ziki. Range=7;
Tama[Tamax]. Range=2;
Teki[0]. Range=7;
T_Tama[Tamax].Range=2;
fps(); //fpsを固定&表示
count++;
wait_fanc();
if(Teki[0].x> -30)Teki[0].x-=10;
if(Teki[0].x==-30)Teki[0].x=800;
if(Key[KEY_INPUT_LEFT]==1)
Ziki.x-=4;
if(Key[KEY_INPUT_UP]==1)
Ziki.y-=4;
if(Key[KEY_INPUT_RIGHT]==1)
Ziki.x+=4;
if(Key[KEY_INPUT_DOWN]==1)
Ziki.y+=4;
if(X*X+Y*Y<Range*Range){ //ココ
DrawCircle(30,30,100,Red,TRUE);
}
Shot_Tama();
for(int i=0; i<Tamax; i++){
if(Tama.Flag==1){
if(Tama.y>0)Tama.y-=T_Speed;
else Tama.Flag=0;
DrawCircle(Tama[i].x,Tama[i].y,ZRange,Blue,TRUE);
}
}
Shot_T_Tama();
for(int i=0; i<Tamax; i++){
if(T_Tama[i].TFlag==1){
if(T_Tama[i].y<500)T_Tama[i].y+=Teki_Speed;
else T_Tama[i].TFlag=0;
DrawCircle(T_Tama[i].x,T_Tama[i].y,TRange,Red,TRUE);
}
}
DrawCircle(Ziki.x+7,Ziki.y+11,Ziki.Range,Red,TRUE );
DrawCircle(Teki[0].x+7,Teki[0].y+10,Teki[0].Range,Red,TRUE);
//DrawBox (50,400,150,405,GetColor(255,255,255),FALSE); バグってるので放置してる
//DrawBox (51,400,51+Zhp*Ziki.hp/Ziki.Mhp,405,GetColor(255,255,255),TRUE );
DrawGraph (Ziki.x,Ziki.y,Ziki_image[0],TRUE );
DrawGraph (Teki[0].x,Teki[0].y,Teki_image[0],TRUE);
ScreenFlip();
}
/////////////////////////////////////////////////////////////////////////
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}