Как мне увеличить гравитацию с течением времени или когда счет обновляется? - PullRequest
0 голосов
/ 12 июня 2019

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

Это мой код гравитации на объекте

private func setupPhysics() {
    physicsWorld.gravity = CGVector(dx: 0.0, dy: -5.8)
    physicsWorld.contactDelegate = self

Это мой код для ярлыка обновления счета.

private func updateScoreLabel() {
    scoreLabel.text = String(score)

Прямо сейчас, объект падает на -5,8, что нормально, вероятно, из-за этого он немного медленнее запускается, но я бы хотел, чтобы он постепенно увеличивал скорость падения.

1 Ответ

0 голосов
/ 13 июня 2019

Добавьте свойство для гравитации с наблюдателем, чтобы изменять гравитацию в мире каждый раз, когда она меняется:

var gravity = CGVector(dx: 0.0, dy: -5.8) {
                 didSet {
                         physicsWorld.gravity = gravity
                        }
                 }
var gravityScaleFactor : CGFloat = 0.9     // Gravity changes this much when score is updated

Измените настройку на:

private func setupPhysics() {
    physicsWorld.gravity = gravity
    physicsWorld.contactDelegate = self

(Возможно, вам не нужноустановить гравитацию PhysicWorld здесь, как это может быть установлено oberver для свойства гравитации при инициализации гравитации.

Отрегулируйте гравитацию при изменении оценки:

private func updateScoreLabel() {
    scoreLabel.text = String(score) 
    gravity.dx *= gravityScaleFactor

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

...