龍神録のボスを残像させる方法
Posted: 2009年10月01日(木) 16:36
サンプルデータを参考にして //**************ここからサンプル************** // 残像処理基本 #include "DxLib.h" // 残像データの数 #define AFTIMAGENUM 65 int PlayerX[ AFTIMAGENUM ], PlayerY[ AFTIMAGENUM ] ; int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int Key ; int i ; // 画面モードのセット SetGraphMode( 640 , 480 , 16 ) ; if( DxLib_Init() == -1 ) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // 描画先画面を裏画面にセット SetDrawScreen( DX_SCREEN_BACK ) ; // キャラクターの初期位置をセット for( i = 0 ; i < AFTIMAGENUM ; i ++ ) { PlayerX[ i ] = 0 ; PlayerY[ i ] = 0 ; } // ループ while( ProcessMessage() == 0 && CheckHitKey( KEY_INPUT_ESCAPE ) == 0 ) { // キー入力取得 Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ) ; // 上を押していたら上に進む if( Key & PAD_INPUT_UP ) PlayerY[0] -= 3 ; // 下を押していたら下に進む if( Key & PAD_INPUT_DOWN ) PlayerY[0] += 3 ; // 右を押していたら右に進む if( Key & PAD_INPUT_RIGHT ) PlayerX[0] += 3 ; // 左を押していたら左に進む if( Key & PAD_INPUT_LEFT ) PlayerX[0] -= 3 ; // 画面を初期化する ClearDrawScreen() ; // プレイヤーを描画する for( i = AFTIMAGENUM - 1 ; i >= 0 ; i -= 8 ) DrawBox( PlayerX , PlayerY , PlayerX + 32 , PlayerY + 32 , GetColor( 0 , 255 - 255 * i / AFTIMAGENUM , 0 ) , TRUE ) ; // 裏画面の内容を表画面に反映させる ScreenFlip() ; // 残像データを一つづつずらす for( i = AFTIMAGENUM - 1 ; i > 0 ; i -- ) { PlayerX[ i ] = PlayerX[ i - 1 ] ; PlayerY[ i ] = PlayerY[ i - 1 ] ; } } DxLib_End() ; // DXライブラリ使用の終了処理 return 0 ; // ソフトの終了 } //**************ここまで************** 改造龍神録のボスを残像させてみたいと思い、 実装してみたのですが、うまくいきません>< どうしたらボスが残像するようになるでしょうか? graph_boss()内 int i; #define AFTIMAGENUM 65 for(i = AFTIMAGENUM - 1 ; i >= 0 ; i -= 8 ){ SetDrawBlendMode( DX_BLENDMODE_ALPHA, 255 - 255 * i / AFTIMAGENUM) ;//αブレンドする DrawRotaGraphFdF(boss.dx,boss.dy,//ボスを描画 1.0f,0.0f,img_dot_boss01[0],TRUE); SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 );//ブレンドモードをリセットする。 } // 残像データを一つづつずらす for( i = AFTIMAGENUM - 1 ; i > 0 ; i -- ){ boss.dx = boss.dx-i ; boss.dy = boss.dy-i ; }