DirectX ボム実装①
実装したこと
・Xキーを押してボムを使用
・敵の弾の消滅、敵にはダメージ
この2つです。
実装方法
私のプログラムでは全てのオブジェクトは所属するシーンが管理しています。
ボムを使う時にシーンから所属しているオブジェクトの配列を取得し、
その全てに対してボム処理を行います。
ただし以下の条件に当てはまる場合は何も処理をしていません。
・アクティブではない
・自機もしくは自弾であるとき
それではコードを見ていきましょう。
void Player::Bomb() { //シーンに登録されているオブジェクトを取得 auto gameObjects = mGameObject->GetScene()->GetGameObjects(); for (auto game : gameObjects) { //非アクティブなら無視 if (!game->GetEnable()) continue; auto tag = game->GetTag(); //自機もしくは自弾なら無視 if (tag == PlayerTag) continue; if (tag == PlayerBullet) continue; //HPをもっているコンポーネントを取得 auto gameHaveHP = game->GetComponent<IHP>(); //HPがあるならダメージを与える if (gameHaveHP != nullptr) { gameHaveHP->Damage(10.0); } //なければアクティブを切る else { game->SetEnable(false); } } }
そして動画です。
youtu.be
まだ何もエフェクトとか付けれてないのでわかりづらいかもですが、
唐突に弾や敵が消える時があると思います。
それがボムを使ったタイミングです。
あとがき
今回はボム実装①でした。
今まで色々実装を自分なりにですが凝ってきたおかげで
変なバグに遭遇することなくここまで実装できました。
これからもこの調子で何もバグが出ず実装が進んだらいいなぁと思っています。
(まぁそんなことは叶わぬ夢であることは知ってますが・・・)
それでは今回はこの辺でノシ
今回作ったものはgithubに上げました
github.com