如何使用SceneKit获得“波浪”效果?

时间:2018-05-08 11:46:45

标签: swift scenekit

需要一些帮助或思考,如何在SceneKit中获得此效果?

我正在使用NSConstraint来开发它,但没有成功......

enter image description here

1 个答案:

答案 0 :(得分:0)

开发此wave效果的最简单方法是在Xcode中使用辅助编辑器(“操作”选项卡)。

您必须创建6个立方体,沿x轴等距放置它们。对于每个多维数据集,您需要应用Move操作,然后分别在+3检查器中将-3Y值分配给Attributes参数。然后在时间轴上选择两个剪辑(对于每个多维数据集)并选择Create Loop,然后在RMB上下文菜单中选择infinite

对于队列中的每个下一个多维数据集,您需要及时移动Move操作的剪辑。像这样:

enter image description here

或者为每个多维数据集使用以下代码(不要忘记分配时间偏移量):

boxUno.geometry = SCNBox()
boxUno.position.x = -10 //initial position along x axis
scene.rootNode.addChildNode(boxUno)

let up_Uno = SCNVector3(x: -10, y: 3, z: 0)
let stay_Uno = SCNVector3(x: -10, y: 0, z: 0)
let down_Uno = SCNVector3(x: -10, y: -3, z: 0)
let moveUp_Uno = SCNAction.move(to: up_Uno, duration: 0.25)
let zero_Uno = SCNAction.move(to: stay_Uno, duration: 0.25)
let moveDown_Uno = SCNAction.move(to: down_Uno, duration: 0.25)

boxUno.runAction(SCNAction.repeatForever(SCNAction.sequence([moveUp_Uno,
                                                             zero_Uno,
                                                             moveDown_Uno,
                                                             zero_Uno])))

//boxDos.position.x = -5
//boxTres.position.x = 0
//boxCuatro.position.x = 5
//boxCinco.position.x = 10
//boxSeis.position.x = 15