43 lines
1.0 KiB
Markdown
43 lines
1.0 KiB
Markdown
# Movement and Collision
|
||
|
||
## 职责
|
||
|
||
移动碰撞模块负责横版基础移动和平台碰撞,是玩家、敌人和可移动物体共用的底层玩法能力。
|
||
|
||
主要源码:
|
||
|
||
- `game/src/movement/platform_world.*`
|
||
- `game/src/data/level_definition.h`
|
||
- `game/src/actor/player_actor.*`
|
||
|
||
## 当前能力
|
||
|
||
- 地面和平台矩形碰撞。
|
||
- 重力。
|
||
- 水平移动。
|
||
- 落地检测。
|
||
- 防止玩家穿过平台。
|
||
- 平台数据来自 `LevelDefinition::collision`。
|
||
|
||
## 当前使用方式
|
||
|
||
`WhiteboxScene` 把关卡碰撞世界传给 `PlayerActor`:
|
||
|
||
```text
|
||
LevelDefinition.collision -> PlayerActor::SetMovementWorld()
|
||
```
|
||
|
||
`PlayerActor` 只提交移动意图,最终位置由 `PlatformMover` 约束。
|
||
|
||
## 约束
|
||
|
||
- 碰撞数据和视觉数据分离。
|
||
- 不让 `StageRenderer` 反推碰撞。
|
||
- 后续敌人也应复用 `PlatformWorld`,不要另写一套地形碰撞。
|
||
|
||
## 下一步
|
||
|
||
- 增加墙体/左右边界碰撞语义。
|
||
- 增加防卡地形和异常状态重置。
|
||
- 扩展成可服务敌人 AI 的移动查询接口。
|