Я близок к завершению моего первого проекта в SceneKit, но я борюсь с последними несколькими шагами. Вероятно, проще всего объяснить мой прогресс, поделившись коротким снимком экрана Xcode Simulator, отображающим мою текущую сцену.
Как вы можете видеть на снимке экрана, мой проект состоит из трех элементы (все это делается в коде, я не импортирую никаких внешних активов):
- вне поля (определяется с помощью шести объектов SCNBox на угол)
- внутри солнца (определяется через Объект SCNTube для круга и объекты UIBezierPath на «луч»)
- положение камеры
На основе обратной связи я передал код в GitHub .
Прямо сейчас камера может вращаться, как видно на снимке экрана, но центр вращения камеры и объектов не выравнивается, поэтому кажется, что она вращается вне оси.
Вот где я хочу добраться:
- правильное положение камеры, чтобы совмещенная коробка и солнце располагались прямо перед камерой, заполняя экран
- . положение un как фиксированное (я полагаю, уже сделано)
- позволяет блоку свободно вращаться в направлении x, y & z вокруг солнца на основе сенсорного ввода - так что пользователь может «щелкнуть» блоком и наблюдать, как он переворачивается и вращаться вокруг солнца
Структура кода прямолинейна:
class GameViewController: UIViewController {
var gameView: SCNView!
var gameScene: SCNScene!
var cameraNode: SCNNode!
var targetCreationTime: TimeInterval = 0
override func viewDidLoad() {
super.viewDidLoad()
initView()
initScene() // createSun() and createCube() called here
initCamera()
}
А по отношению к положению камеры:
func initCamera() {
let camera = SCNCamera()
cameraNode = SCNNode()
cameraNode.camera = camera
cameraNode.position = SCNVector3(x: 0, y: 0, z: 0)
cameraNode.rotation = SCNVector4Make(1, 0, 0, .pi/2)
}
Но что я Выяснилось, что, несмотря на то, что вы играете со случайными значениями cameraNode.position и cameraNode.rotation, вид камеры не меняется.
Мои вопросы - любая помощь будет принята с благодарностью :
- советы по изменению положения камеры (что я делаю не так ?!) - как только она окажется в нужном месте, я легко могу установить "gameView.allowsCameraControl = false"
- совет по как сделать так, чтобы коробка вращалась вокруг своей оси вокруг солнца (пока солнце остается неподвижным)
- растянуть цель! Любые общие сведения о материалах и освещении типа «ознакомьтесь с этим учебным пособием» и включение этого представления в представление SwiftUI
Спасибо!