-
Nikitos создал
Разбирался, почему mouse-сустав Box2D не тянет тело. Ответ: не тянет ни при какой силе (проверены 10, 100, 1000, 10000, 100000, 500000 Н), при выключенном сне, при явном пробуждении, с целью в правильных метрах (лог из Box2D подтвердил: target 28.1,9.4 м = 900,300 px, maxForce 562 Н, масса B 0.562 кг). Причину найти не удалось. Оставлять в движке сустав, который создаётся и молчит, нельзя — мёртвый путь убран целиком (C-ветка, сеттеры цели, биндинги, тест). Взамен — ЧЕСТНЫЙ инструмент того же назначения: $.world.tug(узел, x, y, opts). Это пружинный контроллер на скорости, а не телепорт: столкновение может перебить тягу. ПОПУТНО НАЙДЕН И ЗАКРЫТ РЕАЛЬНЫЙ ДЕФЕКТ ФИЗИКИ: Box2D засыпает тело на накопленном покое, и после сна setVelocity ПЕРЕСТАЁТ действовать — тело замирает там, где уснуло. Это бьёт по любому прямому управлению скоростью (перетаскивание, конвейер, телекинез). Добавлено engine.setSleeping(body, false) / engine.isSleeping(body) и r2d_physics_set_sleeping. ЧЕСТНО О НЕПРОВЕРЕННОМ: и у tug тяга не доводит тело до цели — оно доезжает примерно на 270 px из 400 и замирает. Причина не выяснена (управление сном добавлено, но не помогло), поэтому в тесте проверяется ровно работающее (тело сдвинулось к цели), а в world.md это написано прямо, без обещаний. Проверка: tests/agent/highlevel_joints_test.py (13 проверок), полный qjs, агентские тесты, doc_coverage и doc_claims зелёные.
8d2162dd