スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

【ゲーム開発】自機の当たり判定(仮)とダメージ処理

前回自機から発射される弾と敵の当たり判定を実装しましたが、
今度は自機とボス弾の当たり判定を実装しました。

実装と言っても当たり判定用のメンバメソッドを用意してるので、
こいつに対象のオブジェクトを二つ送るだけだったので何も苦労はしてません。
Base クラスを継承してキャラが居ますので
当たり判定を自機と弾、自弾と敵、敵と自機・・・など別々に作る必要はないので楽は出来ました。
オーバーロードと多態性のおかげでございます。


当たり判定に因んで自機のダメージ処理も実装しておきました。
弾に当たるとダメージを喰らい、HPが0になると残機が一つ減り
残機がなくなるとタイトル画面に移行するようにしました。
残機のアイコンがないので今度作成しないといけません。


各属性のアイコンも作成してみました。
属性アイコン
ん~・・・。
作っておいてなんですが微妙です。
特に雷なんか適当さが滲み出てますしね。


後はこんなものを発掘。
光のエフェクト
何年も前ですが、Action Script 2.0 を触っていた時のデータを少し見つけました。
その中に入っていたエフェクトっぽいデータがあったので使ってみようかなと思いコピーしてきましたが
何処で使えばいいのやら。

その FLASH では敵を倒した時に使ってたみたいですが、まぁ解りにくいw
これは使わんかな・・・。




今回の実装でふと思った事です。
描画を完全に分けないといけないなと思いました。
描画マネージャなるものを作成して std::list を使って登録し、
iterator を使って登録順に描画していこうかなと思ってます。

こうすることで描画のプライオリティを変更したりも描画マネージャで出来るようになるかなと思ったためです。
そうそう変更する事はないと思うんですけどね。
やっぱり描画部分は切り離しておいた方が今後のためになるのではないかなと。

その実装のためにちょっと悩まなければいけない事があったりするので
ここの実装は慎重にいきたいです。


もう一つ、基本的な弾発射クラスは出来ました。
メンバには生成と、各弾の移動メソッドを仕込んでいて、 オーバーライドした Move メソッドが呼ばれると
その弾クラスの動きをしてくれます。

これだけなら何ら問題ないですが、円形に弾を展開し、
数フレーム後に全部自機狙いに変化させたくなった時はどう実装すればよいのだろうか。

CCircle::Move() が最初に呼ばれ、数フレーム後に CAiming::Move()
が出来れば問題ないんですけどね・・・。
ん~。


前に作った縦シューは MOVE_TYPE という移動の種類で分けるやり方でした。
MOVE_AIMING, MOVE_CIRCLE, MOVE_NWAY 等々 enum を使い列挙し、
移動メソッドが呼ばれるとその MOVE_TYPE に応じて
自機狙いだったり、円形の移動だったりを制御してるようでした。

実際、攻撃パターンが途中で切り替わる場合は
ボスの攻撃パターンを制御してるメソッドで
何フレームか経ったら MOVE_TYPE を変更する処理を入れてたようです。
生成された弾はとにかく Move メソッドを呼んでおけばいいって訳ですね。


今の状態なら CCircle を継承して、CCircleAndAiming のような
円形弾+○○みたいなアペンド版を作成するのがいいのか
そもそも弾クラスごとに移動メソッドを分けないで一つのクラス内で扱った方がいいのか
前の案をそのまま採用してしまうのもありかなと思ってますが
考えれば考える程 ん~っ て感じです。


悩んでる部分が今の所少しずつ解決していっている状況なので
なんとかしていきたいですね。

まぁ、あれこれ悩むなら先に描画関係をどうにかしないと今後に関わってくるので
優先事項はその辺ですかね。


何はともあれ一連の流れが出来つつあるので今非常に楽しいです。
ただ、あんま見せれるものないのが内部実装の残念な部分であります・・・。

この記事へのコメント

トラックバック

URL :

検索フォーム
プロフィール

DVDM

Author:DVDM
自作ゲームの開発過程ブログ。
赤髪愛なら誰にも負けない。

 
Pixiv バナー


ブロとも申請フォーム
最新記事
カテゴリ
最新コメント
最新トラックバック
RSSリンクの表示
リンク
ブロとも一覧
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。