私は車が惑星の周りを回る小さなゲームをしています。カメラは常に惑星から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もちろん、あなたは大丈夫です。 'maskNode'は、その子がレンダリングされてからアルファマスクとして使用されるように振る舞います(実際にはバッファは実際には必要ありません)ので、' maskNode'の子は必要です不透明なコンテンツを生成します。ちなみに、ようこそ - 私はあなたが非常に新しいことに気付きました。あなたはおそらくまだ編集できませんので、あなたが言及した変更を編集します。また、良い/有用であると思う質問と回答の両方に投票することができます(自分の質問に対する回答だけでなく、他の回答も)。 – jhabbott
偉大な応答ありがとう! –