#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 для управления скоростью физики.