1

我有以下可以正确加载的 Reality Composer 项目。如您所见,当动画完成时,它应该使用关键字“attackComplete”进行通知。

我如何获得此通知?

在此处输入图像描述

import RealityKit
import ARKit

class ViewController: UIViewController, ARSessionDelegate {
    
    @IBOutlet var arView: ARView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let boxAnchor = try! Experience.loadOrcAttack()
        arView.session.delegate = self
        arView.scene.anchors.append(boxAnchor)
        print("done")
    }
    
    func session(_ session: ARSession, didUpdate anchors: [ARAnchor]) {
        print(anchors)
    }
}
4

1 回答 1

1

使用 Reality Composer 的通知,您可以实现两种场景:

动作监听器

这是你的情况,很容易使用

public var onAction: ((RealityKit.Entity?) -> Swift.Void)?.

import RealityKit

class ViewController: UIViewController {
    
    @IBOutlet var arView: ARView!
    let scene = try! Experience.loadScene()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        arView.scene.anchors.append(scene)
        
        scene.actions.attackCompleted.onAction = notificationID   // listener
    }
 
    fileprivate func notificationID(_ entity: Entity?) {        
         print(scene.actions.attackCompleted.identifier)
    }
}

在此处输入图像描述

触发行动

当您需要通知 Reality Composer 的场景来播放动作时,请使用以下场景:

import RealityKit

class ViewController: UIViewController {
    
    @IBOutlet var arView: ARView!
    let scene = try! Experience.loadScene()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        arView.scene.anchors.append(scene)
    }
    
    @IBAction func press(_ sender: UIButton) {
        scene.notifications.spinner.post()            // trigger for action
    }
}

在此处输入图像描述

于 2022-02-14T21:02:02.780 回答