当たり判定について
Posted: 2011年11月18日(金) 23:48
はじめまして
私は今DXライブラリを用いた音楽ゲームの制作に取り組んでいます。C言語については、関数などは浅く知っている程です。
現在譜面を降らすところの線引きと、判定バーの表示、
譜面の音符1つだけ下に降らすプログラムを書きました。
1つだけ降らそうと思ったのは、当たり判定のプログラムを書くつもりだったからです。
code
#include "DxLib.h"
int Cr;
int i;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
for( i = 0 ; i <96 ; i ++ )
{
// 絵を表示、絵を描くy座標は i が1増えるごとに5ドットづつ下にずれてゆく
LoadGraphScreen( 101 , i * 5 , "greenber.png" , FALSE ) ;
Cr = GetColor( 255 , 255 , 255 ); // 白色の値を取得y480x640
DrawLine(100 , 0, 100,480 , Cr);
DrawLine(130 , 0, 130,480 , Cr);
DrawLine(160 , 0, 160,480 , Cr);
DrawLine(190 , 0, 190,480 , Cr);
DrawLine(220 , 0, 220,480 , Cr);
DrawLine(250 , 0, 250,480 , Cr);
Cr = GetColor( 255 , 0 , 0 ) ; // 判定ライン
DrawLine(90 , 430, 260 ,430 , Cr ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
//待つ
WaitTimer( 2 ) ;
}
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
/code
この時、音符と判定バーが重なった時に押すとGOOD判定をだすプログラムの仕方が分からず困っています。
さらに、譜面の降らし方も実際に好ましくないと思います。
知りたいことは、判定バーと重なった時の当たり判定をするプログラムと、譜面の降らせ方です。
アドバイス頂けたらと思います。
私は今DXライブラリを用いた音楽ゲームの制作に取り組んでいます。C言語については、関数などは浅く知っている程です。
現在譜面を降らすところの線引きと、判定バーの表示、
譜面の音符1つだけ下に降らすプログラムを書きました。
1つだけ降らそうと思ったのは、当たり判定のプログラムを書くつもりだったからです。
code
#include "DxLib.h"
int Cr;
int i;
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
ChangeWindowMode(TRUE);//ウィンドウモード
if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;//初期化と裏画面化
while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
//↑メッセージ処理 ↑画面をクリア ↑入力状態を保存 ↑ESCが押されていない
for( i = 0 ; i <96 ; i ++ )
{
// 絵を表示、絵を描くy座標は i が1増えるごとに5ドットづつ下にずれてゆく
LoadGraphScreen( 101 , i * 5 , "greenber.png" , FALSE ) ;
Cr = GetColor( 255 , 255 , 255 ); // 白色の値を取得y480x640
DrawLine(100 , 0, 100,480 , Cr);
DrawLine(130 , 0, 130,480 , Cr);
DrawLine(160 , 0, 160,480 , Cr);
DrawLine(190 , 0, 190,480 , Cr);
DrawLine(220 , 0, 220,480 , Cr);
DrawLine(250 , 0, 250,480 , Cr);
Cr = GetColor( 255 , 0 , 0 ) ; // 判定ライン
DrawLine(90 , 430, 260 ,430 , Cr ) ;
// 裏画面の内容を表画面に反映させる
ScreenFlip() ;
//待つ
WaitTimer( 2 ) ;
}
}
DxLib_End() ; // DXライブラリ使用の終了処理
return 0 ; // ソフトの終了
}
/code
この時、音符と判定バーが重なった時に押すとGOOD判定をだすプログラムの仕方が分からず困っています。
さらに、譜面の降らし方も実際に好ましくないと思います。
知りたいことは、判定バーと重なった時の当たり判定をするプログラムと、譜面の降らせ方です。
アドバイス頂けたらと思います。