我试图平滑地淡化我的节点颜色,但似乎无法使SCNTransaction正常工作。我想慢慢地从一种颜色过渡到另一种颜色。
let defaultMaterial = SCNMaterial()
defaultMaterial.diffuse.contents = randomColor()
defaultMaterial.specular.contents = randomColor()
defaultMaterial.emission.contents = randomColor()
SCNTransaction.begin()
SCNTransaction.animationDuration = 2.0
emptyLeftSquare.firstMaterial? = defaultMaterial
emptyRightSquare.firstMaterial? = defaultMaterial
emptyUpSquare.firstMaterial? = defaultMaterial
emptyDownSquare.firstMaterial? = defaultMaterial
emptyBottomRightLink.firstMaterial? = defaultMaterial
emptyBottomLeftLink.firstMaterial? = defaultMaterial
emptyTopLeftLink.firstMaterial? = defaultMaterial
emptyTopRightLink.firstMaterial? = defaultMaterial
SCNTransaction.commit()
答案 0 :(得分:1)
我认为您在事务开始之前只设置defaultMaterial
一次,并在动画持续时间内重复使用相同的值。由于在设置初始值后没有变化,因此您没有看到任何颜色变化。
如果您在transaction
内再次设置颜色,那么您应该没问题。或者,如果您希望每个方块和链接的颜色不同,则将初始defaultMaterial
设置重构为方法并重用该方法。