Как получить «волновой» эффект с помощью SceneKit? - PullRequest
0 голосов
/ 08 мая 2018

Нужна помощь или разум, как получить этот эффект в SceneKit?

Я использую NSConstraint для его разработки, но безуспешно ...

enter image description here

1 Ответ

0 голосов
/ 26 мая 2018

Самый простой способ развить этот эффект wave - это использовать вторичный редактор (вкладка Действия) в XCode.

Вам нужно создать 6 кубов, расположить их на равном расстоянии вдоль оси x. Для каждого куба необходимо применить действие Move, а затем присвоить значение +3 и -3 параметру Y соответственно в Attributes инспекторе. Затем выберите оба клипа (для каждого куба) на временной шкале и выберите Create Loop, а затем выберите infinite в контекстном меню RMB.

Для каждого следующего куба в очереди вам нужно вовремя переместить клип действия 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
...