所以我有这个问题,我的SKAction运行正常。有时它运行的持续时间为0.2,但大多数情况下它是瞬间没有节点移动到其位置的动画。
array_dot[j].runAction(SKAction.moveToY(premakni_do, duration: 0.2))
使用此代码的更多代码。这是将球体节点向下移动到一个位置的功能,如果该位置在它们下面是空闲的(如果这个代码很好但是它有点工作: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 :(得分: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
}