2016-02-07 45 views
1

所以我有這個問題,在我的SKAction這麼想的正常運行。有時它運行的持續時間爲0.2,但大多數情況下,瞬間無節點移動到其位置的動畫。爲什麼我SKAction正常運行?

array_dot[j].runAction(SKAction.moveToY(premakni_do, duration: 0.2)) 

更多代碼在何處使用。這是對節點球移動到一個地方下來,如果這個地方是免費的它們下面的函數(IDK如果這個代碼是好的,但它的工作原理有點:P)。 Y上的152也是儘可能低的最大值。

我要做的就是通過匹配的名稱,然後將它們移動到一個數組,扭轉數組,然後移動它們低到他們可以去的所有節點上運行。但正如節點移動前所述,但大部分時間(90%)動畫都不運行。另外我不使用任何物理。

func premakni_pike() 
{ 
    array_dot.removeAll() 
    var preveri_pozicija: CGFloat = 0 
    self.enumerateChildNodesWithName("//*") 
     { 
      node, stop in 
      if(node.name == "blue" || node.name == "yellow" || node.name == "red" || node.name == "green") 
      { 
       self.array_dot.append(node) 
      } 

     } 
    let velikost_array = array_dot.count 
    array_dot = array_dot.reverse() 
    var premakni_do: CGFloat = 0 

    for j in 0...velikost_array-1 
    { 
     if(array_dot[j].position.y != 156) 
     { 
      premakni_do = array_dot[j].position.y 
      for i in 0...6 
      { 
       preveri_pozicija = array_dot[j].position.y - 60 
       if(preveri_pozicija < 156) 
       { 
        break 
       } 
       print(array_dot[j].name,i,preveri_pozicija,array_dot[j].position.y) 


       let novi_node = self.nodeAtPoint(CGPoint(x: array_dot[j].position.x, y: preveri_pozicija)) 

       if(array_dot[j].intersectsNode(novi_node)) 
       { 
        array_dot[j].position.y = preveri_pozicija 
        premakni_do = premakni_do - 60 
        print("PRAZNO") 
       } 
       else 
       { 
        break 
       } 

      } 
      array_dot[j].runAction(SKAction.moveToY(premakni_do, duration: 0.2)) 
     } 
    } 
} 

回答

0

您確定runAction無效嗎?這可能是你設置節點的位置,然後告訴它移動到那個位置。嘗試刪除線

  if(array_dot[j].intersectsNode(novi_node)) 
      { 
       array_dot[j].position.y = preveri_pozicija 
       premakni_do = premakni_do - 60 
       print("PRAZNO") 
      } 
      else 
      { 
       break 
      } 
+0

確實解決了動畫問題,但現在又出現了另一個問題,上面的點不會向下移動。我刪除了部分: array_dot [j]的.position.y = preveri_pozicija –

相關問題