Я пытаюсь программно создать камеру для моего MainScene.scn
файла.
Мне нужно создать камеру в коде, так как я хочу сделать орбиту камеры ,и это единственный способ, которым я могу думать.Я также хотел бы продолжать использовать свой файл сцены.
Это мой код (упрощенный) из моего контроллера представления:
import UIKit
import SceneKit
class GameViewController: UIViewController {
// MARK: Scene objects
private var gameView: SCNView!
private var gameScene: SCNScene!
private var gameCameraNode: SCNNode!
// MARK: View controller overrides
override func viewDidLoad() {
super.viewDidLoad()
// Setup game
initView()
initScene()
initCamera()
}
}
private extension GameViewController {
// Initialise the view and scene
private func initView() {
self.view = SCNView(frame: view.bounds) // Create an SCNView to play the game within
gameView = self.view as? SCNView // Assign the view
gameView.showsStatistics = true // Show game statistics
gameView.autoenablesDefaultLighting = true // Allow default lighting
gameView.antialiasingMode = .multisampling2X // Use anti-aliasing for a smoother look
}
private func initScene() {
gameScene = SCNScene(named: "art.scnassets/MainScene.scn")! // Assign the scene
gameView.scene = gameScene // Set the game view's scene
gameView.isPlaying = true // The scene is playing (not paused)
}
private func initCamera() {
gameCameraNode = SCNNode()
gameCameraNode.camera = SCNCamera()
gameCameraNode.position = SCNVector3(0, 3.5, 27)
gameCameraNode.eulerAngles = SCNVector3(-2, 0, 0)
gameScene.rootNode.addChildNode(gameCameraNode)
gameView.pointOfView = gameCameraNode
}
}
Этот код можно легко вставить для заменыкод контроллера представления по умолчанию.Все, что вам нужно сделать, это добавить MainScene.scn
и перетащить в нечто вроде поля.
Если вы попробуете код, камера окажется в неправильном положении.Если я использую те же свойства для камеры в сцене, она работает, но это не то, что я ищу.
Из того, что я прочитал, SceneKit может создать камеру по умолчанию, как сказано здесь и здесь .Однако я устанавливаю свойство pointOfView
так, как они сказали в тех ответах, но оно по-прежнему не работает.
Как программно установить камеру в правильное положение на сцене?