Closed tonykozlovsky closed 5 years ago
может так и задумано... если один толкает то второй отлетает, если толкают оба то гасят свои силы
Кажется, ошибка воспроизводится с клавиатуры. Если подойти вплотную к стоящему игроку и прыгнуть, то иногда робот отпрыгивает в сторону (робот a), а иногда вертикально вверх (робот b).
Суть в том, что оба, находясь очень близко, должны прыгнуть одновременно, и чтобы b.radius_change_speed
было равно a.radius_change_speed
, по этому я пока не понял, как ты предлагаешь воспроизвести
Я более простой случай рассматриваю. Если расширяется только один робот. Так вот в случае если этот робот по воле случая окажется роботом a, то слолкновение произойдёт, а если b, то нет.
Всё, понял, согласен, действительно результат этой формулы зависит от рандомного порядка роботов. Там ещё про модуль мысль хорошая. Действительно, если бы так было задумано, то нужен как минимум модуль.
А если это воспроизводится в локал раннере, то это не опечатка
Вы правы, это был баг (не только в документации). Обновлены правила/ЛР
Неправильный рассчёт столкновения роботов при расширении.
Опытным путём в локал раннере проверить возможную ошибку не удалось, из-за сложности воспроизведения.
let delta_velocity = dot(b.velocity - a.velocity, normal) + b.radius_change_speed - a.radius_change_speed
Надо заменить наlet delta_velocity = dot(b.velocity - a.velocity, normal) - b.radius_change_speed - a.radius_change_speed
Потому что в случае, когда 2 робота одновременно "расширяются", вместо того, чтобы оттолкнуться с большей силой, они компенсируют расширение друг друга и вовсе не отталкиваются