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)
}
}
これはスクリーンショットです (まだ投稿に画像を含めることができないので、これがリンクです) スクリーンショット