Как эффективно использовать «deviceMotion» CMMotionManager, чтобы заставить шар двигаться внутри круговой границы? - PullRequest
0 голосов
/ 25 августа 2011

Я использую Бурундук Space Manager . У меня есть мое пространство с одним шаром и кучкой сегментов (512 в моем случае), соединенных вместе, чтобы сделать круг.

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

Я получаю компоненты гравитации и пользовательского ускорения от CMMotionManager, но не могу в этом разобраться.

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

1 Ответ

0 голосов
/ 31 августа 2011

Я думаю, что самый простой способ сделать это - изменить гравитацию пространства в соответствии с акселерометром.Чтобы получить плавное круговое движение, вероятно, лучше всего использовать cpSlideJoint с min dist 0 и максимальным dist радиуса круга, в который вы хотите его вращать. В противном случае невозможно сделать гладкую полую форму.Вам придется построить его из множества отрезков, и это может не сработать.

...