Xaoria32(0, 0, 1, 0/Yorii #85) -敵に単発のショットを実装.

敵側にもショット(弾)を実装した。

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年ぶりで覚えてない。)ので、書き直したい・・・。

出現した瞬間に、高速で単発でプレイヤーと同じ直線弾撃ってくるので、意外と難易度高い。
というわけで、なんとかギリギリC96を乗り切ったのであった・・・。

-敵に単発のショットを実装. · bg1bgst333/Xaoria32@a3ab5fc · GitHub