swift - SpriteKit中如何控制节点的速度

标签 swift sprite-kit skphysicsbody sknode

我有一堆对象 (SKNode) 从屏幕顶部开始,通过 SKAction.move(to:duration:)node.run(moveAction)。此外,我在屏幕中央有一个节点,它有自己的物理体,可以通过触摸输入左右拖动。我可以很好地检测到碰撞,但我想知道是否存在在中心节点与任何对象接触时“暂停”所有对象的范例。此外,我希望能够在其他对象“暂停”时移动中心节点,这样我就可以将它移开,然后让对象恢复它们的运动。我想我可能会遍历所有现有对象并设置它们的 isPaused 属性,但我不确定应用程序如何知道中心节点何时不再“碰撞”以便我可以切换该属性.

最佳答案

要暂停,您必须检测 didBegin() 中的联系,用应该暂停的节点填充一些数组,最后暂停节点。例如,实际暂停可以在 didSimulatePhysics() 中完成。暂停您可以使用的所有节点

 self.enumerateChildNodesWithName("aName") {
    node, stop in 
    // do something with node or stop
}

或使用 children节点的属性并循环遍历它(例如循环遍历应该暂停的节点的容器)。

您还可以暂停某些操作:

if let action = square.actionForKey("aKey") {

        action.speed = 0       
}

并使用 action.speed = 1 取消暂停,或者使用 action.speed = 0.5 使其慢动作

为了减慢物理模拟,有一个名为 physicsWorld.speed 的属性(确定模拟运行的速率)。

关于swift - SpriteKit中如何控制节点的速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45573029/

相关文章:

ios - 在不丢弃前一个场景的情况下在 SpriteKit 中呈现一个场景?

ios - 使用 SKShapeNode 像棒球棒一样进行触摸移动击球的最佳方式是什么?

ios - SpriteKit 使用 applyImpulse 移动旋转的物理主体

ios - 在 iOS 中分析文本到语音的字符串

ios - RxSwift 在模拟的 UserDefaults 上观察测试用例

swift - 将 acceptMouseMovedEvents 用于带有 Storyboard和 Swift 的 SpriteKit 鼠标操作

ios - 如何在暂停时转到不同的场景并在未暂停时返回

ios - XLFormDescriptor 在 Swift 中使用 Title 进行初始化

swift - Alamofire.request().responseObject 不返回响应

Swift-通过角度设置物理体速度