Видимо вы пропустили speed
недвижимости в SKPhysicsWorld:
Значение по умолчанию равно 1,0, что означает, что моделирование работает при нормальной скорости . Значение, отличное от значения по умолчанию, изменяет скорость, с которой переходит в физическое моделирование. Например, значение скорости 2.0 указывает, что время в физическом моделировании проходит в два раза быстрее, чем время моделирования сцены. Значение 0.0 приостанавливает физику моделирования .
Имейте в виду, что это повлияет на все тела, и нет встроенного способа сброса системы в предыдущее состояние. Кроме того, для того, чтобы изменение стало видимым, необходимо, чтобы изменение стало видимым, и нужно было установить значение скорости, скажем, 30, в методе update
или didEvaluateActions
и вернуть его обратно в 1 в didSimulatePhysics
. Это также метод, в котором вы должны проверить результат быстрого перехода вперед.
Если тело движется с фиксированной скоростью и не будет затронуто ничем иным, как столкновениями или гравитацией, вы можете использовать чистую тригонометрию (и не потребуется свойство скорости), чтобы найти, где тело будет на n шагов , или сколько шагов он предпримет, чтобы тело перемещалось как минимум на n дистанции.
Я не могу придумать способ продвижения, пока тело не достигнет определенного места назначения, где тело не движется с фиксированной скоростью, и у вас нет простого способа предсказать время прибытия без фактического запуска моделирования физики , Это потребовало бы способности продвигать мир независимо от остальной части сцены (и защищать с тайм-аутом против тела, которое на самом деле никогда не было там), что было бы возможно только с физическим движком третьей стороны. Вы все равно можете использовать Box2D или Chipmunk с Sprite Kit.