#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 кадров в секунду, поэтому мне нужна дополнительная проверка для выполнения.