忍者ブログ
Admin*Write*Comment
35歳からのC言語ゲームプログラミング
[2]  [3]  [4]  [5]  [6]  [7]  [8]  [9]  [10]  [11]  [12
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

背景の隙間から降下してくる敵機実装

564b8054.PNG
 

 

 




画面右上の隙間から降下してきます。
で、左へ旋回、画面左方向へ真っ直ぐ飛んでゆきます。





敵機には出現してからのフレーム数をカウントする変数を持たせているので、『40フレームまで真っ直ぐ降下、その後X方向のベクトルを加算と同時にY方向のベクトルを減少、X方向ベクトルが一定値に到達したらY方向ベクトルは0にして水平方向の運動に移行』って感じで今回みたいな敵機の動きも楽に実装できます。

画面下の対空ミサイルと、もう少し先で天井に付いている固定砲台も実装して、これで回転砲台の手前までの敵機は全て完了しました。

難関、回転砲台に突入する前に実行ファイルをアップしておきます。
http://multip.net/view/N6dOXGEyWk

リンク先の四角い枠の下のほうにある『ダウンロード』をクリックでダウンロード出来ます。
ZIPファイルなので解凍してから、フォルダ内のexeファイルをダブルクリックで実行して遊んでください。
プログラムソースのテキストも同梱されています。

操作方法

自機移動  ・・・・ 矢印キー OR ジョイパッド方向ボタン
波動砲ため ・・・・ Zキー OR ジョイパッドAボタン  を押しっぱなし
波動砲発射 ・・・・ Zキー OR ジョイパッドAボタン  を離す

ESCキーでプログラム終了
自機が敵機や敵弾、背景と衝突した場合もプログラム終了
 

PR
背景の段差を降りてくる歩行戦車実装

62a45833.PNG








2機目の歩行戦車がちょうど足場が無くなって落下中です。
2機とも段差をトントンと降りて来ます。







久々の更新です。
忘れてたわけじゃないんだからねっ!(笑)

仕事の書類やレポートでエクセルとかPCは使っていたんですが、開発環境の起動は自粛していました。
ちょっと集中しなきゃならない仕事があって、たとえ息抜きのつもりでもコッチに手を付けるとどっちが息抜きかわからなくなる事は明白だったので。
ここ1、2週間は仕事モードに切り替えていました。

やっぱり継続してやってないとモチベーション下がりますね。
開発環境を起動するのにちょっと気合が必要でした(笑)。
はじめてしまえばそんな気持ちはあっさり消えましたが・・・。

今回の歩行戦車実装にあたって、背景との当たり判定を座標を渡して判定結果のみを返す関数にしておいた事が有効に作用しました。
移動に背景の影響を受ける敵機も、今後はサクサク実装できそうです。
固定砲台実装

61293bd4.PNG







基地内に突入すると、ウォーリーがワラワラ出現。
そこを過ぎると・・・









7e37a622.PNG








固定砲台登場。
一応自機との位置関係で砲身が動きます。








固定砲台は32×32ピクセルで描けるサイズなんだけども、弾を発射する時に他の敵機と同じ関数で発射時の弾の座標を決めたりとか何かと便利なんで64×64ピクセルのデータになっています。
で、画像データは当然スカスカなんだけど、どこに描くかで失敗しました。
最終的な形のように上向きの砲台は下よせで、下向きの砲台は上よせで描けば問題無かったんですが、僕は最初何も考えず中心揃えで描きました。
うまく背景に砲台が固定されているように見せるためにはY座標を調整します。
その際、中心揃えで描いているとY座標の値が背景の壁の中といったことがおきてきます。
それでも表示上は問題ありません。

では、どこに問題が?

それは敵弾発射です。
砲台は当然ですが名前の通り弾を発射します。
発射された敵弾は画面の外に消えるか背景に当たるまで飛び続けます。
つまり敵弾と背景には当たり判定があるわけで、砲台の座標が背景の中にあると、発射された弾は発射された瞬間に壁との当たり判定に引っかかって消滅してしまいます。

プログラム上は敵弾関係の関数に問題無いはずなのに、なぜ固定砲台だけが弾を発射してくれないのか結構悩ませられました。
おバカですなあ(笑)
ウォーリー(仮名)実装

d70c92ee.PNG


















基地内突入時に出現する敵機を勝手にウォーリーと名付けて(笑)実装しました。
自機に向かってゆっくりと進んできます。
こいつは動くルートが固定されていない上に狭い通路部分で出現するので、敵機として初めて背景との当たり判定を持っています。
進行方向の少し先の座標で背景と当たり判定を行って、もし当たっていればその方向成分のベクトルを0にします。
進行方向の少し先で判定するってところがポイントで、もし敵機の座標位置まんまで判定を行うと、当たった時の進行方向に関わらずベクトルがX、Y成分共に0にされてしまうので、壁に当たった瞬間から突き刺さったかのようにまったく動かなくなります。
その部分でひっかかって少し苦労しましたが、なんとか実装完了しました。
あとは、コイツがわらわらと無数に出てくるように敵のデータファイルを書き足します。

対空ミサイルを破壊可能オブジェクトに変更

777b8f79.PNG











こんな感じで連射される対空ミサイルを・・・






b87a8384.PNG










破壊できます。







敵弾と同じ構造体配列で扱っていた対空ミサイルを、敵機と同じ構造体配列に変更する事で敵機と同じく破壊可能なオブジェクトになりました。
破壊可能にするのは最初から決めていたので最初からこうするべきでした。
敵弾と敵機では持っているデータが違うので、ソースを書き換えるのはけっこうな手間です。
しかも今回のは明らかに無駄手間と言えるでしょう。

考え無しに行き当たりばったりでプログラムを書くと、こんな事になるわけです。
これも勉強か。
反省、反省。

  • ABOUT
やってやれないことはないっ!たぶん・・・
  • カレンダー
04 2025/05 06
S M T W T F S
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
  • 最新コメント
[11/09 CALL MY NAME]
[11/09 erin]
[08/18 うずランド]
[07/11 うずランド]
[06/23 うずランド]
  • プロフィール
HN:
Call my name
年齢:
50
性別:
男性
誕生日:
1974/05/22
職業:
スロ屋店員
趣味:
いろいろ
自己紹介:
やる気だけはあるつもりです。
はい。
  • バーコード
  • ブログ内検索
  • カウンター
  • アクセス解析
Copyright © 35歳からのC言語ゲームプログラミング All Rights Reserved.*Powered by NinjaBlog
Graphics By R-C free web graphics*material by 工房たま素材館*Template by Kaie
忍者ブログ [PR]