---
# System prepended metadata

title: NAWABARYクラス図説明

---

# NAWABARYクラス図説明
## クラス図
![NAWABARYclass](https://hackmd.io/_uploads/SJXVOx0Ba.png)








### 全体
・大まかに以下の通りの組み合わせになっています。
**Player**・・・実際に操作するプレイヤー部分
**Stage**・・・エリアの管理・操作部分
**Hit**・・・エリア・プレイヤーの当たり判定部分
**Damege**・・・当たり判定からダメージ(エリア収縮率)・吹き飛ばしなどの管理・操作部分
**GameManager**・・・ゲーム全体の管理部分

### Player
![image.png](https://hackmd.io/_uploads/Hy5yexumT.png)
#### 説明
・PlayerParametarはプレイヤーのステータスに関するデータを定義しています。
・PlayerCoreはPlayerParametarの情報を外部に出したり、ダメージの部分の適応を行う中央処理部分。
・IInputEventProviderはPad等からの入力を受けてイベントを受け取る部分
・BasePlayerComponentはそれぞれPlayerCoreを参照し、イベントを受け取る部分
・PlayerController等はプレイヤーの実際の動きをイベントから受け取り実施する部分。

#### 相談リスト
・PlayerController等の部分は自信がないので個々の部分は適宜変更してください

### Hit・Damage
![image](https://hackmd.io/_uploads/H1Y7OQ8Vp.png)


#### 説明
・Attackerは誰が攻撃したかを定義してます。
・それをIAttackというインターフェースで定義しています。
・またそのプレイヤーがどこにいるかをPlayer_Positionで定義しています。
・それをPPlayerというインターフェースで定義しています。
・そして、BaseHitToPlayer・BaseHitToStageはそれぞれプレイヤーとステージに対して誰が攻撃したかという基底クラスで、BasePlayerAreaPositionも同様にどこのステージに居るかという基底クラスです。
・そしてDamageの部分ではStageDamageは誰がどのくらいのダメージ(収縮率)を出したかを示しています。
・PlayerActionDamageは吹き飛ばしやガードなどを行う際に誰が攻撃したかを判別しています。

#### 相談リスト
・この部分は正直クラスにしなくても内部で定義できる可能性があるのでこの部分は省略していいかも、例えばPlayerActionDamageとかPlayer_Positionとか

### Stage
![image.png](https://hackmd.io/_uploads/BJxnQP57a.png)


#### 説明
・StageCoreで攻撃を受けたら収縮率を変えたり、時間による収縮を行ったりしています。

### GameManager
![image](https://hackmd.io/_uploads/ByQ7TlpQp.png)

#### 説明
・GamaManagerはインスタンスの初期化やゲーム時間の管理、勝敗判定などを行います。
・StageStateManagerはプレイヤーの位置を管理するマネージャーです。


## 補足
・正直ここまで大きなクラス図を作成したことがなかったので、適宜変更しながら作成していけたらと考えています。
・また、パラメータ自体は私自身もどのパラメータが必要か分からなかったため必要最低限しか定義していません。必要部分は足せるようにしているので適宜変更しながら作成していけたらと考えています。

## シーケンス図
![NAWABARYsequence.png](https://hackmd.io/_uploads/ryNGmlOX6.png)

