見出し画像

趣味のゲーム開発 vol.31

本日も続きから開発していきます!

前回、銃を打つ処理のところで Input.GetButton を使ってしまっていたので、Input.GetButtonDown に修正しました。
これで勝手に連射してしまう問題は直りましたね。

ですが、これはこれで問題になるなと思いますので、もう少し修正します。
というのも、最終的にいろんな武器を切り替えられるようにしたいので、フルオートの銃が連射できないようになってしまうからです。

というわけで、射撃メソッドの入力取得方法は Input.GetButton にして、発射間隔を考慮できるように修正します。
参考にさせて頂いた動画のリンクを貼らせていただきますね。

なるほど!でした。
2Dシューティングゲームを制作される方はぜひ見てみてくださいね!

というわけで、修正していきます。
まず、射撃のクールタイムの変数と、現時点の残りクールタイムの変数を作ります。

スクリーンショット 2021-07-24 15.33.42

でもって、射撃処理のところをこんな感じで修正。

スクリーンショット 2021-07-24 15.46.26

これで、発射間隔を数値で管理できるようになりました!
いいかんじですね。

今度は弾丸が上手くでない問題を発見

喜び勇んで動作テストしていたら、また別の問題にブチあたってしまいました・・・
よくよく見ると、移動しながら射撃したときに、弾がすぐ消えてしまう場合があります。
多分ですが、移動中なので、プレイヤー自身に弾が当たっている判定をされているもよう。

そこで、弾の衝突処理を見直します。

どうやら、プレイヤーの接地判定に使っていた子オブジェクトに弾が吸われていたようでした・・・

スクリーンショット 2021-07-24 16.28.17

この足元のやつ。

というわけで、衝突処理を修正しました。

// 衝突判定
   private void OnTriggerEnter2D(Collider2D collision)
   {
       if(collision.tag != GUtil.TAG_PLAYER &&
           collision.tag != GUtil.TAG_PLAYERFOOT &&
           collision.tag != GUtil.TAG_CAMERA &&
           collision.tag != GUtil.TAG_ITEM)
       {
           Destroy(this.gameObject);
           //Debug.Log(collision.tag + "との衝突にて消滅");
       }
   }

これで問題なさそうですね。
よかったよかった。

次はゲームの体にしてみます!

というわけで、現時点で修正したいところは直せました。
次は一連のゲームの流れを作っていきたいと思います。

これでようやく最低限ゲームの体をなすかなと。

ではまた!

この記事が気に入ったらサポートをしてみませんか?