Что касается значений, на самом деле нет правильного правила того, что значения для импульсов и сил. Это зависит от того, насколько велики ваши физические тела спрайтов и т. Д. Импульс 80 может быть идеальным значением прыжка для 1 размера спрайта, но сделать его вдвое меньшим, а 80 - внезапным путем. Существуют также такие факторы, как сила тяжести, масса и т. Д., Чем это может повлиять на это. Итак, вы обычно просто играете со значениями, пока не получите желаемый результат.
Что касается столкновения с веслом, вам необходимо проверить значения вашей битовой маски и динамические свойства. SpriteKit по умолчанию устанавливает коллизии ко всем объектам, поэтому, если вы специально не укажете своему весло/шару, чтобы игнорировать друг друга, они будут сталкиваться. Есть также такие вещи, как реституция, трение, демпфирование и т. Д., Которые могут влиять на то, как вы справляетесь при столкновении. В Google есть много уроков о физике/конфликтах SpritKit или читайте документацию на яблоко.
Что касается разницы между скоростью и импульсов/силы, в соответствии с яблоками документации
«Во-первых, вы можете контролировать скорость по физике тела непосредственно, установив его скорость и angularVelocity свойства. Как и со многими другими свойствами, вы часто устанавливаете эти свойства один раз, когда физическое тело сначала создается, а затем позволяет физическому моделированию при необходимости корректировать их. Например, предположим, что на мгновение вы делаете космическую игру, где ракетный корабль может стрелять ракетами. стреляет ракетами, ракета должна иметь стартовую скорость судна плюс дополнительный вектор в направлении запуска.
Wh когда тело находится в симуляции, чаще всего скорость корректируется на основе сил, приложенных к телу. Другой источник изменения скорости, столкновений, обсуждаются позже «
https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/SpriteKit_PG/Physics/Physics.html
Поэтому в основном общее правило заключается в следующем:.
1) установить свойство скорости только при создании тела физики. Мне никогда не приходилось делать это для моих игр. Единственный раз, когда я действительно использовать свойство скорости для таких вещей, как двойной прыжки, где мне нужно, чтобы установить его в 0, чтобы иметь последовательный двойной прыжок
...velocity.dy = 0
...applyImpulse(
2) Когда вы играете в игру уже, чем
а) Если вы пытаетесь непрерывно перемещать мяч, вы должны использовать
applyForce...
в чем-то вроде метода обновления вашего SKScene.
б) Если вы хотите сделать свой перепрыгивать, поэтому в основном короткие 1 разы вещь, вы должны использовать
applyImpulse...
Надеется, что это помогает
К «долгого и случайного десятичному значение» вы имеете в виду очень долго, как в очень высоком, и намного выше, чем до коллизона, и если да, то в какой-то момент после столкновения он опустился до разумного значения, или вы имеете в виду очень долго, как и во многих десятичных знаках? Обычно вы не кодируете что-либо, чтобы произойти со скоростью объекта, когда он сталкивается - физический движок делает это. Вы можете влиять на него, указав реституцию, трение, массу и т. Д. –