1

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

このロープが切れないようにするにはどうすればいいですか?どんな助けでも大歓迎です。ありがとう!

4

0 に答える 0