2016-09-25 5 views
0

Я сделал игру с использованием SpriteKit и Swift 3 и выяснил все аспекты игры, за исключением скорости шарового узла в игре. Im путают с различными функциями applyImpulse() и ball.physicsBody.velocity, так как я тестировал оба и, похоже, не понимаю, какова скорость, на которой я фактически программно настроен. Любое разъяснение того, что я должен использовать, было бы здорово?SpriteKit & Swift Ball Speed ​​

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

В заключение я хотел бы оценить:

  1. Просто общее разъяснение относительно скорости шара в SpriteKit и как я должен подойти к нему (что метод/функцию нужно использовать)

  2. Как бы сделать это так, скорость мяча не добрался до этих самых длинных случайных знаков после запятой

Благодарности

+0

К «долгого и случайного десятичному значение» вы имеете в виду очень долго, как в очень высоком, и намного выше, чем до коллизона, и если да, то в какой-то момент после столкновения он опустился до разумного значения, или вы имеете в виду очень долго, как и во многих десятичных знаках? Обычно вы не кодируете что-либо, чтобы произойти со скоростью объекта, когда он сталкивается - физический движок делает это. Вы можете влиять на него, указав реституцию, трение, массу и т. Д. –

ответ

-1

Что касается значений, на самом деле нет правильного правила того, что значения для импульсов и сил. Это зависит от того, насколько велики ваши физические тела спрайтов и т. Д. Импульс 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... 

Надеется, что это помогает

+0

Значения основаны на Newtons, https://en.wikipedia.org/wiki/Newton_(unit) – Knight0fDragon

+0

Применить импульс идет непосредственно к скорости, сила приложения проходит серия физических тестов перед применением к скорости – Knight0fDragon

+0

Вау очень благодарна за все, что разъяснение действительно помогло человеку –