Reality Kit: где в объекте .rcproject хранятся "поведения", созданные в реальном композиторе?

Ситуация

Я делаю приложение AR в xcode (11.3.1). Я добавил объекты (например, куб) в сцену, используя композитор реальности, и добавил поведения (например, касание, переворачивание и просмотр камеры) этим объектам, также используя композитор реальности. Сохранил это, переключился наViewController.swift

В ViewController я загружаю Experience.rcproject и получить доступ к умолчанию Box сцена написанием var box = try! Experience.loadBox(). Все работает как положено.

Затем я печатаю различные объекты в иерархии, чтобы понять, как они устроены. Так что я, например, напишуprint(box)и увидеть все сущности и компоненты, как они описаны здесь

Проблема

Я вижу такие вещи как Transform для должности и т. д. и ModelComponent для сетки, материалов и т. д., и все это имеет смысл, но я не вижу, где хранятся поведения внутри объекта, который.rcproject становится внутри swift.

Например, если я добавил look at camera в реальном композиторе, я предполагаю, что к этому объекту будет прикреплено что-то вроде "рекламного щита", но я не вижу никакой разницы между объектами, к которым применено поведение, и теми, которые не имеют..

Другой пример: добавив tap and flipк объекту, я ожидал бы найти некоторую информацию об анимации где-то внутри объекта, но опять же я не вижу ее прикрепленной к объекту. Я также не вижу никакой информации об анимации или компонентах поведения где-либо в пределах объекта сцены.

Кто-нибудь знает, где я могу получить к ним доступ? Кажется, что-то подbox называется actions но печать, которая просто возвращает Experience.Box.Actions без дополнительной информации.

Я ищу не в том месте? Или они не выставлены?

1 ответ

Распечатать Entity чтобы получить путь, содержащий компоненты:

let boxAnchor = try! Experience.loadBox()
let entity = boxAnchor.steelBox!

print(entity as Any)
print(entity.components[PhysicsBodyComponent] as Any)

https://st ackru.com/images/88c49846375ecc9b352e22ce20e7e05ab52fd111.jpg

Затем примените новые значения:

var physicsComponent: PhysicsBodyComponent = entity.components[PhysicsBodyComponent]!

physicsComponent.mode = .dynamic

boxAnchor.steelBox?.components.set(physicsComponent)
arView.scene.anchors.append(boxAnchor)
Другие вопросы по тегам