トップページ > 過去ログ > 記事閲覧
たり判定について
名前:ルフィ 日時: 2010/07/21 11:16

DXLIBの中、hisTestみたいな関数がありますか? 例えば、以下のソース: // test1.bmpの読み込み GHandle = LoadGraph( "test1.bmp" ) ; // 読みこんだグラフィックを画面左上に描画 DrawGraph( 0 , 0 , GHandle , TRUE ) ; マウスの当たり判定を取ることができますか? 透明なところがあるので、座標だけ使えたら、正しくないと思います。

Page: 1 |

Re: たり判定について ( No.1 )
名前:管理人 日時:2010/07/23 09:45

DXライブラリには2Dの当たり判定を行う関数はありません マウスが指している座標のドットでの判定でしたら LoadSoftImage と GetPixelSoftImage を使用するとご希望の処理が実現できると思います サンプルを書いてみました #include "DxLib.h" int GraphX, GraphY ; int GraphHandle ; int SoftImageHandle ; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int inp ; int MouseX, MouseY ; int r, g, b, a ; // ウインドウモードで起動 ChangeWindowMode( TRUE ); // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1; // 画像を読み込む SoftImageHandle = LoadSoftImage( "Test1.bmp" ) ; GraphHandle = CreateGraphFromSoftImage( SoftImageHandle ) ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ); // メインループ(何かキーが押されたらループを抜ける) GraphX = 320 ; GraphY = 0 ; while( ProcessMessage() == 0 ) { // 画面のクリア ClearDrawScreen(); // 画像の操作移動 inp = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; if( inp & PAD_INPUT_LEFT ) GraphX -= 8 ; if( inp & PAD_INPUT_RIGHT ) GraphX += 8 ; if( inp & PAD_INPUT_UP ) GraphY -= 8 ; if( inp & PAD_INPUT_DOWN ) GraphY += 8 ; // 画像の描画 DrawGraph( GraphX, GraphY, GraphHandle, TRUE ) ; // マウスの座標を取得 GetMousePoint( &MouseX, &MouseY ) ; // マウスが示している座標の色を取得する GetPixelSoftImage( SoftImageHandle, MouseX - GraphX, MouseY - GraphY, &r, &g, &b, &a ) ; // 色を表示する DrawFormatString( 0, 0, GetColor( 255,255,255 ), "R:%d G:%d B:%d A:%d", r, g, b, a ) ; // 裏画面の内容を表画面に反映 ScreenFlip(); } // DXライブラリの後始末 DxLib_End(); // ソフトの終了 return 0; } マウスが指している描画画像上の座標の色を取得して画面に表示するプログラムです この関数で得られる r, g, b, a の値からマウスとの当たり判定を行うことができると思います 因みに bmp ファイルはアルファ( A )値を含めることはできませんので、アルファ値で 判定したい場合は png 形式か tga 形式を使用する必要があります
Re: たり判定について ( No.2 )
名前:ルフィ 日時:2010/07/23 14:17

当たり判定が出来ました、どうもありがとうございました~0~

Page: 1 |