ステート駆動において複数のステートを継承したい時の解決方法を教えて下さい
ジャンプ攻撃ステートの作成で困っています。
現在UnityでステートベースAIのステートマシンで動くキャラクターを作成しています。ジャンプステートや攻撃ステートなどの基本的なステートとハイジャンプステートや必殺技ステートなど基本的なステートを拡張したステートは実装できたのですが、ジャンプ攻撃ステートの実装で困ってしまいました。
普通にジャンプステートと攻撃ステートを継承したいのですが、C#では多重継承はできないようです。
【ステートベースAIの実装にて参考にしたサイト】
YTTMWORK様
https://yttm-work.jp/game_ai/game_ai_0003.html
ゲームAIの各手法まとめ - Qiita
https://qiita.com/ReplayTVR/items/e6603b40addfc7f75d47
自分で考えた解決方法3つ
1.諦めて片方のステートだけ継承してもう片方はコピペする <= 同じコードを書くことになる、DRY原則が...
2.JumpクラスやAttackクラスを作成してそちらにステートの処理を投げる <= 完全に機能分割的な手法、オブジェクト指向とは...
3.移動とアクションを別々のコンテキストで管理する <= コンテキストを2つ持つのは複雑、回避のような移動とアクションが切り離させないステートはどうすれば...
どの解決法もしっくりきません。
スマートな解決方法をご存知の方がいらしたら、是非ご教授下さい!
lang
1public class JumpStaet : State {} 2public class AttackState : State {} 3public class HighJumpState : JumpState {} 4public class SpecialAttackState : AttackState {} 5public class JumpAttackState : ? {}
Unity 2018, Windows10, VSCode

回答1件
あなたの回答
tips
プレビュー