2015-04-28 6 views
2

Im пытается анимировать несколько SCNNodes, используя класс SCNAction для запуска одновременно, но мне трудно понять его. У меня такое чувство, что это может быть невозможно, но не помешает задать вопрос и посмотреть, есть ли у кого-нибудь ответ.Могу ли я использовать SCNAction для нескольких SCNNodes одновременно (одновременно)?

Например:

Позволяет сказать, что я сделал

SCNAction *move = [SCNAction moveTo:SCNVector3Make(10.0,0.0,10.0) duration:5.0]; 

и хотел бежать два узла одновременно в одном месте

[nodeOne runAction:move]; 
[nodeTwo runAction:move]; 

Когда я делаю это nodeOne просто выполнить действие и nodeTwo даже не запускается после nodeOne. Есть ли способ заставить nodeOne и nodeTwo перемещаться одновременно?

сторона примечание: я делаю это в представлении - (void) viewDidLoad, должен ли я использовать viewDidAppear, чтобы это произошло?

+0

Когда я попробовал аналогичный пример, оба узла одновременно сходились к одной и той же точке. Посмотрите, если вы разместите больше своего кода. – sambro

+0

По какой-то причине, когда я пытаюсь выполнить функцию nodeOne и nodeTwo с использованием синтаксиса выше, и то, что вы ему дали, не работает для меня. Тем не менее, я понял, что, используя цикл foreach и помещая узел один и два в изменяемый массив, я смог применить к ним несколько SCNActions и запустить их одновременно! Спасибо за ваш ответ, хотя! – Chris

ответ

0

Вот фактический код из моего примера (из шаблона игры).

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // create a new scene 
    SCNScene *scene = [SCNScene scene]; 

    // create and add a camera to the scene 
    SCNNode *cameraNode = [SCNNode node]; 
    cameraNode.camera = [SCNCamera camera]; 
    [scene.rootNode addChildNode:cameraNode]; 

    // place the camera 
    cameraNode.position = SCNVector3Make(0, 30, 90); 

    // retrieve the ship node 
    SCNNode *box1 = [SCNNode node]; 
    SCNNode *box2 = [SCNNode node]; 

    box1.geometry = [SCNBox boxWithWidth:85 height:5 length:5 chamferRadius:0]; 
    box1.position = SCNVector3Make(-10, 30, -10); 

    box2.geometry = [SCNBox boxWithWidth:80 height:10 length:10 chamferRadius:0]; 
    box2.position = SCNVector3Make(0, 10, 5); 

    [scene.rootNode addChildNode:box1]; 
    [scene.rootNode addChildNode:box2]; 

    SCNAction *move = [SCNAction moveTo:SCNVector3Make(10.0,30.0,-10.0) duration:5.0]; 

    [box1 runAction:move]; 
    [box2 runAction:move]; 

    // retrieve the SCNView 
    SCNView *scnView = (SCNView *)self.view; 

    // set the scene to the view 
    scnView.scene = scene; 

    // allows the user to manipulate the camera 
    scnView.allowsCameraControl = NO; 

    // show statistics such as fps and timing information 
    scnView.showsStatistics = YES; 

    // configure the view 
    scnView.backgroundColor = [UIColor blackColor]; 

} 

Ящики сходятся красиво. Разве это не тот эффект, который вы ищете?

Смежные вопросы