2014-01-02 3 views
1

У меня есть анимация, использующая мир физики spritekit. Я искал, есть ли способ «перескочить вперед» по физике и просто получить результат или путь без отображения анимации. Я смотрел на мир физики и ничего не видел для этого? Любые идеи о том, как я могу это сделать?Ускорение часов в физике для комплекта спрайтов

В основном я хочу показать пользователю результирующее местоположение анимации, прежде чем они решат выполнить.

ответ

2

Видимо вы пропустили speed недвижимости в SKPhysicsWorld:

Значение по умолчанию равно 1,0, что означает, что моделирование работает при нормальной скорости . Значение, отличное от значения по умолчанию, изменяет скорость, с которой переходит в физическое моделирование. Например, значение скорости 2.0 указывает, что время в физическом моделировании проходит в два раза быстрее, чем время моделирования сцены. Значение 0.0 приостанавливает физику моделирования .

Имейте в виду, что это повлияет на все тела, и нет встроенного способа сброса системы в предыдущее состояние. Кроме того, для того, чтобы изменение стало видимым, необходимо, чтобы изменение стало видимым, и нужно было установить значение скорости, скажем, 30, в методе update или didEvaluateActions и вернуть его обратно в 1 в didSimulatePhysics. Это также метод, в котором вы должны проверить результат быстрого перехода вперед.

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

Я не могу придумать способ продвижения, пока тело не достигнет определенного места назначения, где тело не движется с фиксированной скоростью, и у вас нет простого способа предсказать время прибытия без фактического запуска моделирования физики , Это потребовало бы способности продвигать мир независимо от остальной части сцены (и защищать с тайм-аутом против тела, которое на самом деле никогда не было там), что было бы возможно только с физическим движком третьей стороны. Вы все равно можете использовать Box2D или Chipmunk с Sprite Kit.

Смежные вопросы