在此文档之后,我不知道是否有一种简单的方法沿着Y轴移动ModelEntity .我希望这样做的原因是,在ARQuickLook中,该功能与.scale和.rotate函数一起工作,这些功能也在苹果文档中列出。
如果有任何简单/类似的方式来安装这些手势,请告诉我。
发布于 2022-03-18 17:35:14
在RealityKit 2.0中,与ARQuickLook不同的是,只有一个触摸拖动手势实现了来移动模型(目前还没有实现用于垂直拖动的双指手势)。用一个单指手势,你可以沿着它的锚定平面移动实体--通常它是XZ平面,所以没有Y轴拖动。
public static let translation: ARView.EntityGestures尽管如此,您仍然可以选择另外实现2D UIGestureRecognizer。
import UIKit
import RealityKit
class ViewController: UIViewController {
@IBOutlet var arView: ARView!
var box: ModelEntity? = nil
override func viewDidLoad() {
super.viewDidLoad()
box = ModelEntity(mesh: .generateBox(size: 0.05))
box!.generateCollisionShapes(recursive: true)
arView.installGestures([.all], for: box! as (Entity & HasCollision))
let anchor = AnchorEntity(world: [0, 0,-0.2])
anchor.addChild(box!)
arView.scene.anchors.append(anchor)
for swipe in [UISwipeGestureRecognizer.Direction.up,
UISwipeGestureRecognizer.Direction.down] {
let sw = UISwipeGestureRecognizer(target: self,
action: #selector(dragUpAndDown))
sw.direction = swipe
arView.addGestureRecognizer(sw)
}
}
@objc func dragUpAndDown(recognizer: UISwipeGestureRecognizer) {
if recognizer.direction == .up {
box!.position.y += 0.01
}
if recognizer.direction == .down {
box!.position.y -= 0.01
}
}
}https://stackoverflow.com/questions/71528947
复制相似问题