Closed kuriuminoki closed 1 year ago
現状CharacterControllerはCharacterActionを使ってキャラを操作するための処理をすべて受け持っている。 しかしその実装では、操作方法(キーボード or AI or DualShock?)等の切り替えをする場合Controllerごと変える必要がある。
キーボードの入力受付やAIはControllerから完全に分離して別のクラス(Player とか Brainクラスと命名)にし、それをControllerにインジェクションする方がよさそう。
classDiagram class CharacterAction { +void キャラを動かす() } class CharacterController { # CharacterAction* action # Brain* brain +void Actionを使ってキャラを操作() } class StickController { +void 棒人間を操作() } class Brain { +virtual void 指示() } class Keyboard { +void キーボードによる指示() } class BattleAI { +void 敵対するキャラに攻撃するよう指示() } class FollowAI { +void あるキャラについていくよう指示() } CharacterController o-- CharacterAction CharacterController o-- Brain CharacterController <|-- StickController Brain <|-- Keyboard Brain <|-- BattleAI Brain<|-- FollowAI
Brainクラスの派生クラスとしてAIを実装。後々の実装が楽になりそう。
現状CharacterControllerはCharacterActionを使ってキャラを操作するための処理をすべて受け持っている。 しかしその実装では、操作方法(キーボード or AI or DualShock?)等の切り替えをする場合Controllerごと変える必要がある。
キーボードの入力受付やAIはControllerから完全に分離して別のクラス(Player とか Brainクラスと命名)にし、それをControllerにインジェクションする方がよさそう。
変更後のUML図