そこで、本のコードを改造しています。
以下のコードは、自キャラの動きの部分です。(みにくくてすいません)
//メインループ
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);
}
}
}
このコードを実行すると、ジャンプ中に左右の移動ができなくなります。接地している時と同じように、空中でも左右に動けるようにはできませんか?
お願いします。