Функция только помещает 1 объект Arkit Node на сцену (Swift4)

Мой код ниже должен поместить созданный пользователем объект arkit в сцену, но он не работает. Он размещает 1 объект и не может больше размещать другие объекты. Код, который я закомментировал, помещает шары формы scn идеально и столько, сколько пользовательский запрос, когда вызывается функция. Однако он размещает только 1 созданный пользователем объект, и я хочу разместить несколько объектов.

    func createBall(hitPosition : SCNVector3) {
 //        let newBall = SCNSphere(radius: 0.01)
 //        let newBallNode = SCNNode(geometry: newBall)
//        newBallNode.position = hitPosition
 //        self.sceneView.scene.rootNode.addChildNode(newBallNode)

    let scene = SCNScene(named: "art.scnassets/dontCare.scn")!

    // Set the scene to the view
    sceneView.scene = scene

}

1 ответ

Когда вы работаете с ARkit, вы работаете только с одной сценой, поэтому, если объект, который вы хотите разместить, загружается из .scn файл, вам нужно загрузить сцену, вытащить узел, который вы хотите поместить на место (вероятно, корневой узел той сцены, которую вы только что загрузили), и поместить его в .position как у вас есть пример кода шарика в закомментированном коде.

Вы, вероятно, найдете полезным загрузить сцену заранее и взять rootNode так что вы можете бросить его столько раз, сколько захотите, на позиции, где он проверяет попадание на вашем поле.

Обновление: у меня есть только мой iPad, а не ноутбук, и я не могу сразу поделиться игровыми площадками, в которые включен файл.scn. Предполагается, что вы начинаете с файла.SCN, в котором объект, который вы хотите разместить в качестве корневого узла, похож на:

guard let loadedScene = SCNScene(named: "something.scn")
  else { fatalError("Unable to load scene file.") }
let node = loadedScene.rootnode // type of this attribute is an SCNNode

И затем отсюда, так же, как вы бы поместили мяч, добавив узел в существующую сцену, вы можете взять node мы только что вытащили из loadedScene возьмите его и бросьте туда, где у вас был мяч.

Другие вопросы по тегам