Cannon.js - Столкновения с вращающимся объектом не так, как ожидалось - PullRequest
0 голосов
/ 10 сентября 2018

В настоящее время я использую Cannon.js с Three.js для симуляции физики, особенно столкновений.

У меня есть вращающийся «спиннер», который постоянно вращается вокруг своей оси Y, используя следующий код:

angularVelocity: new CANNON.Vec3(0,5,0) fixedRotation: true

У меня есть метод, который создает 50 сфер и устанавливает скорость для каждой из них, чтобы они катились в счетчик. При попадании в сферу она становится красной.

Проблема в том, что некоторые сферы, кажется, катятся прямо через вращающуюся руку, а некоторые имеют очень небольшое воздействие, что приводит к странным результатам.

Есть что-то, что я пропустил или мне нужно сделать по-другому, чтобы все сферы ударялись и сталкивались с вращающейся рукой?

Демонстрация здесь - https://codepen.io/danlong/pen/LJQYYN

1 Ответ

0 голосов
/ 10 сентября 2018

Попробуйте увеличить объекты (в данном случае сферы) размером var sphereShape = new CANNON.Sphere(1); и подсчет мировых подэтапов тоже this.world.step(1 / 60, 40); по умолчанию 10. При увеличении радиуса сферы не забудьте переместить их вверх по y оси let y = 1; ,

Скорее всего, объекты слишком малы и движутся достаточно быстро, чтобы вычисления тоже стали неточными.

С точки зрения производительности лучше увеличивать размеры объектов, а не количество подэтапов. Но в любом случае проверьте с помощью тестов.

...