Я довольно новичок в быстрой работе, и я работал над игрой для удовольствия, и я сталкиваюсь с чем-то, что я не могу получить.SpriteKit Проблемы с переходом и перемещением
Когда кнопка запуска нажимается, персонаж движется вперед со следующей функцией
func move(dt: CGFloat) {
position.x += moveRate * dt
}
И при нажатии на кнопку прыжка, персонаж прыгает со следующей функцией
func jump() {
physicsBody?.applyImpulse(CGVector(dx: 0, dy: jumpRate))
run(jumpAnimation!)
}
и работы отлично, но рассмотрим этот сенарио. Игрок работает, а затем они прыгают, все еще двигаясь. Пока он находится в воздухе, игрок отпускает кнопку перемещения, и позиция игрока x останавливается. Это, очевидно, очень неестественно, и мне хотелось бы, чтобы позиция игрока ослабела.
Теперь я также играл с перемещением персонажа с physicsBody?.applyForce(CGVector(dx: 1000, dy: 0))
, который дал бы такой эффект, но он, кажется, только получает все большую скорость, и вы не получаете постоянную скорость или «максимальную скорость», так сказать.
Может ли кто-нибудь поделиться с вами некоторым пониманием? Мне бы хотелось узнать все, что я могу о spritekit и разработке игр в целом. Благодаря!
Из того, что я видел, меняя положение вручную в то же время, используя силы, никогда не работал хорошо. Попытайтесь использовать либо силы, либо положение узла изменения, воздействуя на его свойство position. Кроме того, применять силу следует вызывать в рамках обновления: метод, каждый кадр (в отличие от метода applyImpulse). – Whirlwind
Даже изменение вектора скорости непосредственно при использовании сил и импульсов будет играть хорошо, поэтому, возможно, вы можете играть с этим, чтобы ... – Whirlwind
играл с физикойBody намного больше на всех объектах. Кажется, это очень сложно, но я добился лучшего результата с помощью 'applyForce' и' applyImpluse'. Что вы подразумеваете под «прямым изменением вектора скорости» ??? –