Арифметический оператор для отрицательных чисел в Swift

#swift #math #int

#быстрый #математика #инт #swift #int

Вопрос:

Я изучаю некоторые разработки игр с помощью Swift, и поэтому я хочу знать, когда узел находится дальше по оси Z. Мой расчет — это:

 if zPositionOfBowlingBall > -7 { 
  // Do something here
}
  

Итак, если позиция больше, чем -7, так что -8 в качестве примера выполните блок кода. Это никогда не вызывается. Я предполагаю, что именно так работает подписанный int. Если бы кто-нибудь мог объяснить, что было бы действительно полезно понять и каким был бы правильный синтаксис.

ОБНОВИТЕ полный код здесь

 extension ViewController: ARSCNViewDelegate {
    func renderer(_ renderer: SCNSceneRenderer, didSimulatePhysicsAtTime time: TimeInterval) {
        bowlingBall.removeBowlingBallWhenZPositionIsReached()
    }
}

func removeBowlingBallWhenZPositionIsReached() {
        guard let bowlingBallNode = bowlingBallNode else {return}
        let bowlingBallPosition = bowlingBallNode.presentation.worldPosition
        let zPositionOfBowlingBall = Int(bowlingBallPosition.z)
        if zPositionOfBowlingBall > -7 {
            performFadeOutOnBowlingBallWith(duration: 2.0)
        }
    }
  

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

1. Да, я пробовал это. В основном в этом блоке я удаляю узел. Но он удаляет его сразу, я хочу удалить его только тогда, когда узел прошел -7, я могу сделать == -7, но это не то, что я хочу.

2. ваш комментарий мало что прояснил

3. @GustavoVollbrecht Извиняюсь за это. Не думал, что это как-то повлияет на вопрос

4. опубликуйте больше связанного кода

5. @GustavoVollbrecht обновил приведенный выше код. Короче говоря, когда мяч окажется дальше, чем на -7 по оси z, уберите его. Или в моем случае я его исключаю.

Ответ №1:

-8 меньше -7, поэтому ваш код должен быть:

 if zPositionOfBowlingBall < -7 { 
  // Do something here
}
  

если вы хотите, чтобы значение было больше 7 независимо от знака, вы можете использовать абсолютное значение.

abs(<#value#>)

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

1. Спасибо, пожалуйста, посмотрите мои комментарии выше, возможно, я не объяснил, чего я хотел четко.

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