回答編集履歴

1 文言微修正

negitama

negitama score 943

2018/06/06 21:58  投稿

sakura_hana さんの回答コードでもそうされていますが、Weapon クラスの types についてはインスペクターから指定するようにしておくと、複数の武器種で使いまわせるので便利かと思います。
Eneny や Kibako についても HP や弱点の属性などをインスペクターから指定するようにしておくといいかもしれませんね。
Enemy や Kibako についても HP や弱点の属性などをインスペクターから指定するようにしておくといいかもしれませんね。
---
以下は蛇足かもしれませんが、いったん書いたものなので残しておきます。
「このコードが動くか?」というのは試してみればわかることで、「エラーになるがどこが原因か?」というのも、答えるのは比較的簡単です。
(質問者さんのコードを試してみましたが、特にエラーなく動作しますね)
しかし今回のような「このコードは最適か?」という意図の質問には、かなり答えるのが難しいです。実装方法には数多くのパターンがあり、目的によって解が異なるためです。
- A) 単純に読みにくいので、読みやすく整理したい
- B) 現状では処理負荷が高すぎてガクつくので改善したい
- C) EnemyとKibako以外にも多くの種類のDamageableオブジェクトを用意するのに、クラスごとに同じコードを繰り返し書いているのでまとめたい
- D) Enemyの処理は簡易なもので仮置きしているが、将来的にはもっと複雑な別の処理に置き換えたい
など
上記A,Bに関しては現状それほど問題になっていないのではないかと想像します。
上記のCの改善のためには sakura_hana さんの回答のように、EnemyとKibakoに共通の親クラスを用意して共通処理を親クラスに移すのが一案です。
いずれにしても、開発を進めながら必要が生じたときに、必要な箇所に対して改良を行う、くらいの考え方がいいんじゃないかと思います。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る