|
Тела не проходят друг сквозь друга + карта коллизий агенту
Расталкивание через реестр сцены: герой выталкивает себя из NPC
(PlayerController), враг — из героя, NPC и своих (EnemySystem); каждый
актор двигает только себя (separateCircles). attackStop (0.85) больше
суммы радиусов — авто-атака не дрожит.
A* не ведёт героя сквозь тело: SceneObjects.walkGrid() считает тайлы
NPC занятыми (герой застревал «на носу» у Ирвина — звон в верёвку
не поднимал флаг). Проводка: клик по миру, авто-подход к цели,
scene:route моста.
Карта коллизий агенту: слой s.collision {width, height, blocked (0/1
с footprint пропов), props} + команды scene:walkable {x, y} и
scene:raycast {from, to} (прямая видимость, вода прозрачна). Новый
сценарий checks/collision.mjs: слой валиден, walkable/raycast на
конкретных тайлах, клик в дерево — герой в проходимом, телепорт в
тело спящего ползуна — враг выталкивает себя.
Доки: agent.md (слой + 2 команды), practices.md (ситуация «проверяю
коллизии/движение» + грабли телепорта на тайл перехода).
Co-Authored-By: Claude Code <noreply@anthropic.com>
|
|---|
|
|
| apps/game/src/agent/SceneAgentView.ts |
|---|
| apps/game/src/agent/__tests__/snapshot.test.ts |
|---|
| apps/game/src/agent/snapshot.ts |
|---|
| apps/game/src/scenes/LocationScene.ts |
|---|
| apps/game/src/systems/ClickRouting.ts |
|---|
| apps/game/src/systems/PlayerController.ts |
|---|
| apps/game/src/systems/SceneObjects.ts |
|---|
| apps/game/src/systems/combat/CombatWorld.ts |
|---|
| apps/game/tools/agent.mjs |
|---|
| apps/game/tools/checks/collision.mjs 0 → 100644 |
|---|
| docs/engine/agent.md |
|---|
| docs/engine/practices.md |
|---|