필자는 물리 본문이있는 스프라이트가 있습니다. 이 스프라이트를 이동하려면 update() 함수에서 스프라이트의 속도를 150 단위로 설정하고 오른쪽으로 이동하려면 -150을 계속 설정합니다. (첨부 된 코드를 참조하십시오.)Spritekit/Swift에서 첫 번째 스프라이트의 물리 본문에 두 번째 스프라이트 정렬
저는 첫 번째 스프라이트를 따르고 싶은 두 번째 물리학 체를 가지고 있습니다. 이 두 번째 물리학 체의 좌표는 첫 번째 물리층의 맨 아래에 있고 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를 사용하는 나의 문제에 대한 수용 가능한 해결책을 찾아 냈다. 하지만 여전히 원래의 게시물에 가변적 인 "압축/확장"갭이있는 이유는 아직 알지 못합니다. 아마 언젠가 그런 일이 일어난 이유를 알아낼 것입니다. –
답변 해 주셔서 감사합니다. :) –