私は物理ボディを持つスプライトを持っています。 このスプライトを移動するには、update()関数でスプライトの速度を150単位に設定し、-150を左に移動します。 (添付のコードを参照してください)Spritekit/Swiftの最初のスプライトの物理ボディに2番目のスプライトを合わせる
私は最初のスプライトに従いたいと思っている2番目の物理学のボディを持っています。この第2の物理学のボディの座標は、最初のものの底部にあり、右に20ポイントです。
私は2番目のフィジックスボディが常にオフセットの最初のものに従うことを望みます。
私のコードほとんどがでも動作しますが、第1のボディと第2のボディの距離がわずかに変化することに気付きました。右に動くと、それらの間の距離は少し圧縮されます。左に動くと、それらの間の距離は少し増加します。こちらのビデオをご覧ください:https://www.youtube.com/watch?v=K9FhIdMwp7kここ
は、私が使用しているコードです:
override func update(_ currentTime: TimeInterval) {
switch playerDirection {
case "stopped":
playerSpeed = 0.0
case "right":
playerSpeed = 150.0
case "left":
playerSpeed = -150.0
default:
print("default")
}
// ball is the first sprite and footBall is the second sprite:
ball.physicsBody?.velocity = CGVector(dx: playerSpeed, dy: ball.physicsBody!.velocity.dy)
footBall.position = CGPoint(x: (ball.position.x + 20), y: ball.position.y - (ball.size.height/2) + 4)
myCam.position = CGPoint(x: round(ball.position.x), y: self.size.height/2)
...私は成功せず、()のオーバーライドFUNCのdidSimulatePhysicsを使って遊んでてきた
、また、 。
私は、ベロシティを使用してプレーヤーを移動し、代わりに直接ball.position.x(ball = player)とfootBall.position.xをインクリメントする別のテストを行いました。整列した。しかし、私がこのルートをとると、ゲームの物理が他の場所でどのように働くかを変えなければならないでしょう。無視したいのですが。
ありがとうございます。
そういったことは、別のスプライトにスプライトを追加するための素晴らしい作品が、それは物理学の体では動作しません。私はSKPhysicsJoint https://developer.apple.com/reference/spritekit/skphysicsjointを使用して私の問題に許容可能な解決策を見つけました。しかし、私は元の投稿に可変の "圧縮/拡張"のギャップがあった理由はまだ分かりません。おそらく、私はいつかそれが起こった理由を理解するでしょう。 –
ありがとうございました:) –