敵側にもショット(弾)を実装した。
EnemyMapData.hに、
Playerと同じようにm_vecpShotListを追加。
さらにm_nShotIdxを追加。
今回、Enemy用のEnemyShotではなく、Playerのショットを流用することにした。
EnemyMap.hに、
DrawShotを追加。
EnemyMap.cppは、
DeployEnemyでCShotオブジェクトを作成し、m_vecpShotListに追加。
m_nEnemyNooが0、2、4の時に弾を実装。
(間に合わないのでハードコードせざるを得ない。)
メンバ関数DrawShotは、
こんな感じ。
Procのこの辺がハマりどころ。
y座標の設定がおかしくて、弾が止まったままだったり、消えたりした。
また、実際には 3発連射を用意していたが、この現象のために単発にせざるを得なかった。
RemoveAllでm_vecpShotListの破棄。
GameScene.cppは、
DrawShotの追加。
Player.cppは、
当たり判定の追加。
Shot.cppは、
ここがハマった原因だった。
m_yに座標を保存しているが、指定された座標はスクリーン座標に対し、CShotのm_yはワールド座標のため、弾が消えてしまっていた。
この辺りの座標変換とか管理がちゃんと整理されてない(のと、1年ぶりで覚えてない。)ので、書き直したい・・・。
今回、0.0.1.0で実装できたのは、敵の弾だけですね・・・結局・・・。単発しか出ないんですが、速度とタイミングのせいか、無駄に難易度が上がってる・・・。 #C96 #xaoria_dev pic.twitter.com/lAziclFd0K
— B.G@C96月南メ07b (@miu_hiro_) August 12, 2019
出現した瞬間に、高速で単発でプレイヤーと同じ直線弾撃ってくるので、意外と難易度高い。
というわけで、なんとかギリギリC96を乗り切ったのであった・・・。