SKSpriteKit как контролировать скорость импульса или силы?

#ios #skspritenode

#iOS #skspritenode

Вопрос:

Привет, ребята, я хочу применить замедленное движение в направлении вверх,

что меня смущает, когда я применяю impulse

 [self.physicsBody applyImpulse:CGVectorMake(0, 60)];
  

он применяет импульс с требуемой скоростью, поскольку он измеряет его скорость, массу и другие физические вещи

что мне нужно для applyImpulse, но с контролируемой скоростью impluse, которая применяется к объекту, к которому применяется импульс.

я пытался установить четный self.speed , но безуспешно,
как можно добиться желаемого воздействия или воздействия на спрайт с контролем скорости.

существуют ли какие-либо свойства, которые я должен установить для SKSpriteNode перед применением импульса,

или что-то еще? Любые предложения или мысли будут оценены

Спасибо

Ответ №1:

Свойство скорости SKNode связано с SKActions, однако свойство скорости SKPhysicsWorld — это то, что вы, вероятно, захотите настроить для достижения физики в замедленном режиме.

В документации о свойстве скорости SKPhysicsWorld говорится следующее

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

Получите доступ к нему из вашего подкласса SKScene следующим образом-

 self.physicsWorld.speed = 0.5; // half speed (slow motion)
  

Комментарии:

1. Это то, что я искал просто и легко, спасибо, приятель 🙂

Ответ №2:

Все силы применяются как фактические физические силы к физическим телам.

Результирующее движение тела, к которому была приложена сила, зависит не только от величины и направления силы, но Также от размера и плотности (т. Е. Массы) тела, к которому применяется сила, и от того, где на тело прикладывается сила.

Я не совсем уверен, что вы имеете в виду, когда говорите, что вам нужно «контролировать скорость импульса».

Может быть, вам нужно вообще не использовать силы, а перемещать узел вручную.

Вы можете использовать действие [SKAction moveByX:y:] или обновить позицию в методе обновления. Таким образом, вы можете точно контролировать скорость движения.

Комментарии:

1. Ну, я хотел применить импульс, но, как вы сказали, у этого меньше шансов, я догадался об этом раньше, но хотел убедиться, что нет другого способа, кроме moveTo или MoveBy , спасибо Fogmeister

2. Вы также можете установить свойство speed SKPhysicsWorld для управления скоростью физики.