SpriteKit で横スクロール ゲームを開発しようとしています。私の問題は次のとおりです。
- ゲームにロープを追加しようとしていますが、ゲームを開始するとロープが切れます。このロープを非スクロール ゲームに追加すると、完全にうまく機能します。問題はシーンのアンカーポイントか何かにあると思いますが、わかりません。私はすでにこの「ハードワーク」の1週間を過ごしています。「world」という名前の SKNode があり、すべてのオブジェクトがそれに接続されています。「world」を左に移動し、「カメラ」をプレーヤーの中央に配置すると、プレーヤーが右に移動し、他のすべてのオブジェクトが取り残されました。
これが私のコードです:
これが「世界」の機能です
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) } }
このロープが切れないようにするにはどうすればいいですか?どんな助けでも大歓迎です。ありがとう!