【问题标题】:Why doesn't my SKAction run properly?为什么我的 SKAction 不能正常运行?
【发布时间】:2016-02-08 08:45:52
【问题描述】:

所以我遇到了这个问题,我的 SKAction 无法正常运行。有时它会运行 0.2 的持续时间,但大多数时候它是即时没有节点移动到其位置的动画。

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))
        }
    }
}

【问题讨论】:

    标签: ios swift sprite-kit


    【解决方案1】:

    您确定 runAction 不起作用吗?可能是您正在设置节点位置,然后告诉它移动到该位置。尝试删除线条

                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].position.y = preveri_pozicija
    猜你喜欢
    • 2015-03-24
    • 2022-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-24
    • 2018-11-11
    • 2021-05-13
    相关资源
    最近更新 更多