Как анимировать SCNNode.scale с помощью SCNTransaction

      let balloon: SCNNode

SCNTransaction.begin()
SCNTransaction.animationDuration = 4
SCNTransaction.animationTimingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
balloon.scale.x = 2.28
balloon.scale.y = 2.28
balloon.scale.z = 2.28
// or balloon.scale = SCNVector3(2.28, 2.28, 2.28)
SCNTransaction.commit()

Вышеупомянутое не анимируется. Документы говорят.scaleявляется анимируемым, однако новый масштаб применяется немедленно.

У меня такая же проблема с диффузным цветом материала.

Следующие работы:

      balloon.runAction(SCNAction.scale(to: 2.28, duration: 4), forKey: "scale")
DispatchQueue.main.asyncAfter(deadline: .now() + 1) { [self] in
    balloon.removeAction(forKey: "scale")
}

однако иногда я предпочитаюSCNTransactionпотому что анимацию можно заменить или остановить, просто установив новое значение (напрямую или через другую анимацию) вместо того, чтобы явно останавливать ее, как с.removeAnimation, а также из-за его основной функции — атомарности.

Что мне не хватает?

0 ответов

Другие вопросы по тегам