기존 노드가있는 장면에 새 노드를 추가하는 데 문제가 있습니다. 추가 할 때 .position
속성을 동일하게 설정했지만 기존 노드의 위치가 아닌 장면의 원점에 나타납니다.SpriteKit 노드 위치 복제
저는 SpriteKit에서 아주 간단한 소행성과 같은 게임을 만들었습니다. 나는 소행성을 추가 내 GameScene의 방법이 있습니다
// MARK: - Asteroids
func insertAsteroids(count: Int, size: AsteroidSize, newPosition: CGPoint?) {
for i in 0 ..< initialAsteroidCount {
let asteroid = Asteroid(size: size)
if let position = newPosition {
asteroid.position = position
} else {
asteroid.position = randomPositionOnScene()
}
self.addChild(asteroid)
}
}
을하고 그래서 그들은 임의의 장소에 가서 내 GameScene에서 나는 nil
로 설정 newPosition
와 insertAsteroids(initialAsteroidCount, size: AsteroidSize.Big, newPosition: nil)
다음과 같이 호출. 내가 소행성을 촬영하면
나는 약간 다르게 같은 방법을 호출하는 접촉 핸들러를 가지고 있지만 :
이func didBeginContact(contact: SKPhysicsContact) {
[...]
//make new asteroids
if let newSize = oldAsteroid.smallerAsteroidSize() {
let newAsteroidCount = Int(arc4random_uniform(2)) + 2
self.insertAsteroids(newAsteroidCount, size: newSize, newPosition: oldAsteroid.position)
}
[...]
}
결정적인 것은 oldAsteroid.position
입니다. println()
위치를 insertAsteroids()
직후에 볼 수 있으며 동일하지만 표시 될 때 장면의 왼쪽 하단 (원점)에 나타납니다.
self.insertAsteroids(newAsteroidCount, size: newSize, newPosition: CGPoint(x: 40, y: 50))
내가 좌표 시스템과 실수를하거나 새로운 노드를 추가로 수행하는 방법이있다 유무 : 나는 그들이 여전히 원점에 표시 알려진 위치로 강제하더라도
SKPhysicsContactDelegate 메서드 내부의 장면?