趣味のゲーム開発 vol.27

今回も引き続きソースの整理をやっていきたいと思います。

各スクリプトに散在していたタグの定数をまとめたGUtilクラスを作成しました。
SceneView上に配置しなくても呼び出せるようです。
インスタンスは生成されている、ということですかね?

敵を操作しているクラスに、銃で撃たれたアクションを記述しました。
これは単純にOnCollitionEnter2Dで良いかと思い、オーバーライドしました。
挙動的には良さそうですが、別の問題が発生。

以前から気になっていたのですが、弾がスムーズに出ません。
キーを押しても反応する時としない時があります。
また、弾オブジェクトのコライダーをIsTriggerにしないと、なんかプレイヤーが地面に食い込みます。
・・・弾と衝突してしまっているのでしょうか?
デバッグしたところ、プレイヤーとの衝突によりずれてしまっていました。
また、弾があらぬ方向に飛んでいく問題が発生しましたが、こちらはZ軸の固定を忘れていたために発生した現象でした。

調べていた感じ、やはりUpdateとFixedUpdateの違いでミスしていたようです。

http://mediamonster.blog.fc2.com/blog-entry-22.html

InputはUpdate・・・

とりあえず、以下の通り修正しました。

・弾丸のコライダーはIsTrigger
・弾丸のZ軸を固定
・弾丸のBodyTypeをKinematicに
・弾丸のCollisionDetectionをContinuousにし、飛翔途中のあたり判定も有効に
・弾丸のInterpolateをInterpolateにし、スムージングをかける
・敵の操作クラスでOnTriggerにてダメージ処理を定義

これで、少しはマシな挙動になりました。
しかし、プレイヤーが前方に移動しているときに、弾丸がかき消されてしまう不具合が残っています。
次回はこちらを修正したいと思います。

ではまた!

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