広告
↓発売日:2018年09月22日↓
新品価格 |
今回は地上に固定されている砲台のような背景にとどまっている敵を作りたいと思います。
と言っても今までのままだとただ直線にy座標を背景と同じだけ変化させればいいだけなので、もう少し変化を加えるべく昔のSTGを意識した左右の動きも背景に取り入れたいと思います。
では、まずはプレイヤーの左右の移動に応じて背景も少し動かします。
事前準備として左右に動かした時に背景が切れてしまわないように今まで上下2枚張り合わせていた背景を合計4枚に増やしてその中心に表示される画面が来るようにします。
こんな感じです。
そして背景y座標の「back_img_y」に加えてx座標にあてる変数を用意します。
double back_img_x;
そして上の画像のように背景を配置しなおします。
back_img_x = -220; back_img_y = 0; void my_draw_back(){ DrawGraph(back_img_x, back_img_y, back_img, TRUE); DrawGraph(back_img_x + 440, back_img_y, back_img, TRUE); DrawGraph(back_img_x, back_img_y - 480, back_img, TRUE); DrawGraph(back_img_x + 440, back_img_y - 480, back_img, TRUE); DrawLine(0, 240, 440, 240, Color_White); DrawLine(220, 0, 220, 480, Color_White); DrawFormatString(220, 240, Color_White, "(0,0)"); }
これで事前準備完了です。
あとはプレイヤーの移動に合わせて左右に背景が動くように「my_move_back()」内でキー入力に応じて「back_img_x」を変化させます。
void my_move_back(){ if (key[KEY_INPUT_RIGHT] >= 1 && p1.x < RIGHT_LIMIT && game_state == 20){ back_img_x -= 0.5f; } if (key[KEY_INPUT_LEFT] >= 1 && p1.x > LEFT_LIMIT && game_state == 20){ back_img_x += 0.5f; } back_img_y += back_img_speed; if (back_img_y > 480){ back_img_y = 0; } }
これで背景のささやかな動きは完了です。
では今回のテーマの背景の敵の動きですが、背景と同じように座標を変化させればよいだけなのでとても簡単です。
「my_move_enemy()」の「case 9」です。
if (enemy[i].init_flag == 0){ enemy[i].x = enemy[i].first_x; enemy[i].y = enemy[i].first_y; enemy[i].gamecount_point = gamecount; enemy[i].init_flag = 1; } else{ /*移動部分*/ }
座標を設定しているだけなのでとくに説明はいらないですね。
if (key[KEY_INPUT_RIGHT] >= 1 && p1.x < RIGHT_LIMIT){ enemy[i].x -= 0.5f; } if (key[KEY_INPUT_LEFT] >= 1 && p1.x > LEFT_LIMIT){ enemy[i].x += 0.5f; } enemy[i].y -= back_img_speed;
背景と同じように動かすだけです!
背景の敵が現れました!
ここまでの中間ソースになります。
次回は今までの動きを組み合わせたりして少し複雑な敵の動きを追加したいと思います。
広告
↓発売日:2016年02月29日↓
12歳からはじめる ゼロからのC言語 ゲームプログラミング教室 新品価格 |
↓発売日:2018年06月22日↓
新品価格 |
↓発売日:2018年03月09日↓
新品価格 |
↓発売日:2017年06月14日↓
新品価格 |
↓発売日:2018年05月21日↓
新品価格 |
↓発売日:2017年12月07日↓
新品価格 |
↓発売日:2017年02月08日↓
新・明解C言語で学ぶアルゴリズムとデータ構造 (明解シリーズ) 新品価格 |
↓発売日:2017年09月26日↓
新品価格 |