Сущность и модель ARKit - PullRequest
0 голосов
/ 08 мая 2020

Я добавляю эту цифру в свой ящик.

var cancellable: AnyCancellable? = nil
var cards: [Entity] = []

cancellable = ModelEntity.loadModelAsync(named: "toy_drummer") 

    .append(ModelEntity.loadModelAsync(named: "toy_robot_vintage"
    .collect()

    .sink(receiveCompletion: { (error) in

    cancellable?.cancel()

    }, receiveValue: { entities in

        var objects: [ModelEntity] = []

        for entity in entities {

            entity.generateCollisionShapes(recursive: true)

            //here I append to my objects all the entities with a for loop

После этого я повторяю свой индекс и такие объекты

for (index, object) in objects.enumerated() {
     cards[index].addChild(object)
}
cancellable?.cancel()

Мой вопрос:

Допустим, у меня более двух моделей (toy_drummer, toy_robot_vintage et c ...) Мне нужно выполнить некоторую операцию на основе этих значений названия модели.

Я добавляю распознаватель жестов касания в свой arView и каждый когда я нажимаю на что-то, имя мне хотелось бы узнать, чтобы выполнить другие операции. Но я не очень понимаю, как это сделать.

Моя последняя цель - сравнить, совпадает ли первое нажатое поле со вторым, поэтому, если я знаю значение модели, я могу это сделать.

1 Ответ

0 голосов
/ 02 июля 2020

Вы можете использовать такой код:

@objc func handleTap(_ sender:UITapGestureRecognizer) {
    
    let tapLocation = sender.location(in: arView)
    
    if let hitResult = arView?.entity(at: tapLocation) {
         print(hitResult.name)
    }
}

Или с помощью hitTest:

let hitResult = scnView?.hitTest(tapLocation).first
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...