나는 차가 행성 주위를 돌아 다니는 작은 게임을하고 있습니다. 카메라는 항상 행성에서 90도 각도로 기계로 향하게됩니다. 행성의 질감이 카메라와 함께 회전한다는 문제가 발생했습니다. 카메라가 회전하지 않으면 텍스처가 정상적으로 작동합니다. 이 문제를 어떻게 해결할 수 있습니까?SpriteKit. Stop CameraNode로 텍스처 회전
beizerPath에서 지구를 만들기 :
planetTexture = SKTexture(imageNamed: "asanoha")
planet = SKShapeNode(path: beizerPath.cgPath)
planet.position = CGPoint(x: 0, y: 0)
planet.zPosition = 10
planet.physicsBody = SKPhysicsBody(polygonFrom: beizerPath.cgPath)
planet.physicsBody?.isDynamic = false
planet.physicsBody?.categoryBitMask = planetGroup
planet.fillColor = SKColor.white
planet.fillTexture = planetTexture
planet.strokeColor = getRandomColor()
planet.lineWidth = 7
planet.glowWidth = 0.5
sceneNode.addChild(planet)
카메라 위치 :
var cam = SKCameraNode()
override func didMove(to view: SKView) {
self.camera = cam
}
let angle = atan2(car.position.y, car.position.x)
let theta : CGFloat = 0.0
let cx = (Float(a) * cosf(Float(angle - theta)))
let cy = (Float(a) * sinf(Float(angle - theta)))
cam.position = CGPoint(x: CGFloat(cx), y: CGFloat(cy))
cam.zRotation = angle - CGFloat(M_PI_2)
멋진 답변입니다. 고마워요! SKCropNode는 완벽하게 작동합니다. 필자는 SkShapeNode가 fillColor를 가져야 만한다는 점을 주목합니다. 그렇지 않으면 작동하지 않습니다. –
@DmitriyRodygin 물론, 괜찮습니다.'maskNode'는 자식이 렌더링 된 다음 알파 마스크로 사용되는 것처럼 동작합니다 (실제로는 버퍼가 실제로 필요하지 않습니다). 따라서 'maskNode'의 자식 불투명 한 내용을 생성합니다. 그건 그렇고 - SO에 오신 것을 환영합니다 - 당신이 아주 새롭다는 것을 알기 때문에 아직 편집 할 수 없으므로 언급 한 변경 사항을 편집 할 것입니다. 또한 당신이 좋은/유용하다고 생각하는 질문과 대답 모두에 투표 할 수 있습니다 (자신의 질문에 대한 대답이 아니라 다른 질문에 대한 대답). – jhabbott
대단히 감사드립니다! –