我正在尝试在 SpriteKit 中开发横向滚动游戏。我的问题如下:
- 我正在尝试在我的游戏中添加一根绳子,但是当我开始游戏时它会断掉。当我将这条绳索添加到非滚动游戏中时,它运行得非常好。我认为问题出在场景锚点之类的地方,但我就是想不通。我已经有一个星期的“辛苦”了。我有一个名为“世界”的 SKNode,所有对象都附加到它上面,我将“世界”向左移动,我将“相机”放在我的玩家身上,所以玩家向右移动,所有其他对象都是被留下来。
这是我的代码:
这是“世界”的功能
override func didSimulatePhysics() { centerOnNode(ball) } func centerOnNode(node: SKNode) { positionInScene = convertPoint(node.position, fromNode: node.parent!) world.position = CGPointMake(world.position.x - positionInScene.x + 100, world.position.y) }
这是绳子的功能
let length = 5 let startPosition = CGPointMake(CGRectGetMaxX(self.frame), CGRectGetMaxY(self.frame)) var chains : [SKNode] = [] func addChain() { let chainHolder = SKSpriteNode(imageNamed: "chainHolder") chainHolder.position = startPosition chains.append(chainHolder) world.addChild(chainHolder) chainHolder.physicsBody = SKPhysicsBody(circleOfRadius: chainHolder.size.width / 2) chainHolder.physicsBody?.dynamic = false for i in 0..<length { let chainRing = SKSpriteNode(imageNamed: "chainRing") let offset = chainRing.size.height * CGFloat(i + 1) chainRing.position = CGPointMake(startPosition.x, startPosition.y - offset) chainRing.name = String(i) chains.append(chainRing) world.addChild(chainRing) chainRing.physicsBody = SKPhysicsBody(rectangleOfSize: chainRing.size) } for i in 1...length { let nodeA = chains[i - 1] let nodeB = chains[i] let joint = SKPhysicsJointPin.jointWithBodyA(nodeA.physicsBody, bodyB: nodeB.physicsBody, anchor: CGPointMake(CGRectGetMidX(nodeA.frame), CGRectGetMinY(nodeA.frame))) /*var pt = CGPointMake(world.position.x, world.position.y); pt = convertPoint(pt, fromNode: world); pt.x += scene.size.width * scene.anchorPoint.x; pt.y += scene.size.height * scene.anchorPoint.y; //pt.x += nodeA.position.x //- nodeA.frame.size.width / 2 //pt.y += nodeA.position.y let joint = SKPhysicsJointPin.jointWithBodyA(nodeA.physicsBody, bodyB: nodeB.physicsBody, anchor: pt)*/ self.physicsWorld.addJoint(joint) } }
我应该如何制作这条绳索,使其不再断裂?任何帮助,将不胜感激。谢谢!