「14歳からはじめるc言語わくわくゲームプログラミング教室」を購入し、その中にあるソースを元にしながら作成しているのですが、
ショットの向きがプレイヤーの向きと同期していて、ショットの向きが途中で変わってしまいます。・・・修正しようにもいまいち考えがまとまりません。
下記の「向きによってナイフの向きを変える」の部分が原因だとわかってはいるのですが・・・
どうかよろしくお願いします。
void DrawKnife(int key){
//発射処理
if (IsBKeyTrigger(key) == TRUE){
//空きを探す
int i;
for (i = 0; i < MAX_KNIFE; i++){
if (g_stagedata.knives[i].living == FALSE) break;
}
if (i < MAX_KNIFE){
g_stagedata.knives[i].living = TRUE;
if(g_stagedata.hero.turn==FALSE){ //操作キャラの手(手前)からナイフを出す
g_stagedata.knives[i].x = g_stagedata.hero.x + IMG_CHIPSIZE;
}
else{
g_stagedata.knives[i].x = g_stagedata.hero.x - IMG_CHIPSIZE;
}
g_stagedata.knives[i].y = g_stagedata.hero.y;
}
}
//ナイフの描画と移動
float mv = 350.0f * g_frametime; //移動量計算
for (int i = 0; i < MAX_KNIFE; i++){
if (g_stagedata.knives[i].living == FALSE) continue;
//向きによってナイフの向きを変える
if(g_stagedata.hero.turn==FALSE){
g_stagedata.knives[i].x += mv;
}
else{
g_stagedata.knives[i].x -= mv;
}
//マップ当たり判定
AtariInfo atari = CheckBlock(g_stagedata.knives[i].x, g_stagedata.knives[i].y,
g_stagedata.knives[i].x);
if (atari.DR == TRUE || atari.UR == TRUE || atari.DL == TRUE || atari.UL == TRUE) g_stagedata.knives[i].living = FALSE;
//画面外に出ても消滅
if (g_stagedata.knives[i].x > g_stagedata.scrollx + 1000 || g_stagedata.knives[i].x < g_stagedata.scrollx - IMG_CHIPSIZE){
g_stagedata.knives[i].living = FALSE;
}
DrawGraph((int)(g_stagedata.knives[i].x - g_stagedata.scrollx),
(int)g_stagedata.knives[i].y,
g_imghandles.knife, TRUE);
}
}
//キートリガー処理
BOOL IsBKeyTrigger(int key){
if (key & PAD_INPUT_B){
if (g_stagedata.g_bkey_prev == FALSE){
g_stagedata.g_bkey_prev = TRUE;
return TRUE;
}
}
else {
g_stagedata.g_bkey_prev = FALSE;
}
return FALSE;
}