0

2 つのノードを持つシーンがあります。1 つはシェイプ ノードで、もう 1 つはスプライト ノードです。シーンに追加し、それぞれの物理ボディ プロパティを定義します。2 つのノード間に新しい Fixed ジョイントを追加するまでは、すべて問題ないように見えます。物理デバッグで画面に斜めの線が表示されていることがわかります。これが何を意味するのかわかりません。アンカー ポイントがずれているようです。

注: アンカー ノードは 1x1 サイズの画像です

これがコードです

class GameScene: SKScene, SKPhysicsContactDelegate {

    private var anchor = SKSpriteNode(imageNamed: "anchor")
    private var curve: SKShapeNode!

    override func didMove(to view: SKView) {
        self.physicsWorld.contactDelegate = self

        self.addAnchor()
        self.addCurve()

        // This is the code is causing the diagonal line
        let jointOneFixed = SKPhysicsJointFixed.joint(withBodyA: anchor.physicsBody!, bodyB: curve.physicsBody!, anchor: anchor.position)
        self.physicsWorld.add(jointOneFixed)
    }

    func addAnchor(){
        anchor.position = CGPoint(x: self.size.width / 2, y: self.size.height + 1)
        anchor.anchorPoint = CGPoint(x: 0.5, y: 0.5)
        anchor.setScale(1)
        anchor.zPosition = 2
        anchor.name = "anchor"
        anchor.physicsBody = SKPhysicsBody(rectangleOf: CGSize(width: anchor.size.width, height: anchor.size.height))
        anchor.physicsBody?.isDynamic = false
        anchor.physicsBody?.affectedByGravity = false
        anchor.physicsBody?.allowsRotation = true
        self.addChild(anchor)
    }

    func addCurve() {
        let startPoint = CGPoint(x: anchor.position.x, y: anchor.position.y)
        let endPoint = CGPoint(x: self.size.width / 2, y: self.size.height - 400)

        // Create line with SKShapeNode
        curve = SKShapeNode()
        curve.zPosition = 9
        let path = UIBezierPath()
        path.move(to: startPoint)

        path.addCurve(to: endPoint, controlPoint1: CGPoint(x: endPoint.x - 50, y: self.size.height - 140), controlPoint2: CGPoint(x: endPoint.x + 70, y: self.size.height - 260))

        curve.path = path.cgPath
        curve.strokeColor = UIColor.red
        curve.lineWidth = 9
        curve.name = "curve"
        curve.physicsBody = SKPhysicsBody(edgeLoopFrom: curve.path!)
        self.addChild(curve)
    }
}

これはスクリーンショットです (まだ投稿に画像を含めることができないので、これがリンクです) スクリーンショット

4

0 に答える 0