我有一個物理主體的Sprite。 爲了移動這個精靈,在update()函數中,我不斷地將精靈的速度設置爲150個單位向右,並且-150向左。 (見附件代碼。)將Spritekit/Swift中第一個Sprite的物理主體與第二個Sprite對齊
我有第二個物理機構,我想要跟隨第一個精靈。第二個物理體的座標位於第一個物理體的底部,右邊20個點。
我想第二個物理機構總是跟着第一個,與偏移量。
我的代碼主要是的作品,但我注意到,第一個和第二個機構之間的距離稍有不同,我希望沒有變化。向右移動時,它們之間的距離被壓縮一點。向左移動時,它們之間的距離稍微增加。看到視頻的位置: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。但我仍然不知道爲什麼我原來的帖子中存在一個可變的「壓縮/擴展」差距。也許我會弄清楚爲什麼有一天發生了。 –
謝謝你的迴應:) –