3
我正在做一個小遊戲,汽車繞行星。相機總是以與地球成90度的角度對準機器。我遇到了一個問題,即行星的質感與相機一起旋轉。如果相機不旋轉,紋理表現得應該如此。我該如何解決?SpriteKit。停止與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 @DmitriyRodygin當然,你說得很對 - 'maskNode'的行爲就好像它的子元素被渲染,然後用作alpha掩碼(實際上沒有實際需要緩衝區),所以'maskNode'的子元素需要產生不透明的內容。順便說一句 - 歡迎來到我 - 我注意到你很新,所以你可能還沒有編輯,所以我會編輯你提到的那些改變。另外請注意,您可以對您認爲很好/有用的問題和答案進行投票(不僅僅是對自己問題的回答,也包括其他問題)。 – jhabbott
非常感謝! –