そこで、本のコードを改造しています。
以下のコードは、自キャラの動きの部分です。(みにくくてすいません)
//メインループ void MyMain(){ Vector curvec1 = {0,0} ; int Key = GetJoypadInputState( DX_INPUT_KEY_PAD1 ); if( Key & PAD_INPUT_LEFT ){ curvec1 = AddVector( curvec1, LEFTMOVEC ); g_direction = DIRECTIN_LEFT; } if( Key & PAD_INPUT_RIGHT ){ curvec1 = AddVector( curvec1, RIGHTMOVEC ); g_direction = DIRECTION_RIGHT; } //地面との当たり判定 BOOL ontheground = FALSE; //着地フラグ if ( g_jikipos.y > 399 ){ ontheground = TRUE; g_nowjumping = FALSE; g_jikivector.x = 0; g_jikivector.y = 0; } if( Key & PAD_INPUT_A ){ curvec1 = AddVector( curvec1, JUMPMOVEC ); g_nowjumping = TRUE; } //自キャラ座標の計算 if ( ontheground == TRUE ){ //接地時 g_jikivector = AddVector( g_jikivector, curvec1 ); } else { //ジャンプ中 g_jikivector = AddVectorInFrameTime( g_jikivector, GRAVITY ); if(g_jikivector.y > 400) g_jikivector.y = 400; } g_jikipos = AddVectorInFrameTime( g_jikipos, g_jikivector ); //自キャラの描画 if ( (ontheground == TRUE) && (g_nowjumping == FALSE) ){ if ( fabs(curvec1.x) > ZEROVALUE ){ //走る DrawAnimation( g_jikipos.x,g_jikipos.y, 1, 0.3, g_direction, &g_jikiimage[2], 6, 12); } else { //停止状態 DrawAnimation( g_jikipos.x,g_jikipos.y, 1, 0 , g_direction, &g_jikiimage[0],1, 12 ); } } else { //ジャンプ状態 if ( fabs(g_jikivector.x) < ZEROVALUE ){ DrawAnimation( g_jikipos.x,g_jikipos.y, 1, 0, g_direction, &g_jikiimage[8],1, 12 ); } else { DrawAnimation( g_jikipos.x,g_jikipos.y, 1, 0, g_direction, &g_jikiimage[9],1, 12); } } }このコードを実行すると、ジャンプ中に左右の移動ができなくなります。
接地している時と同じように、空中でも左右に動けるようにはできませんか?
お願いします。