Я новичок в Swift и только начал играть с RealityKit и ARKit. Я работаю над личным проектом, в котором я хотел бы, чтобы 3D-объект приклеился к камере от первого лица. Подобно AR Angry birds или любой другой игре FPS. Я видел несколько примеров в SceneKit или SpriteKit, я уверен, что это просто неправильное понимание того, как работает привязка сущностей.
Мой главный вопрос:
- Как мне прикрепить объект реальности, созданный в Reality Composer, к камере от первого лица? Я хочу создать сцену реальности, в данном случае ручную пушку, и при нажатии на нее выстреливает.
Ниже приведен код моего ViewController.
extension ViewController: ARSessionDelegate
{
func session(_ session: ARSession, didUpdate frame: ARFrame)
{
guard let arCamera = session.currentFrame?.camera else { return }
// Probably where I update the location of my reality experience
}
}
class ViewController: UIViewController
{
@IBOutlet var arView: ARView!
override func viewDidLoad()
{
super.viewDidLoad()
arView.session.delegate = self
// Load the "ArmCannon" scene from the "Experience" Reality File
let armCannonAnim = try! Experience.loadArmcannon()
// Create Anchor to anchor arm cannon to
let anchor = AnchorEntity(.camera)
anchor.transform = arView.cameraTransform
// Add the anchor to the scene
arView.scene.addAnchor(anchor)
// Setup tap gesture on arm cannon
let tapGesture = UITapGestureRecognizer(target: self, action:#selector(onTap))
arView.addGestureRecognizer(tapGesture)
// Add the the cannon animation to arView
arView.scene.anchors.append(armCannonAnim)
}
@IBAction func onTap(_ sender: UITapGestureRecognizer)
{
let tapLocation = sender.location(in: arView)
// Get the entity at the location we've tapped, if one exists
if let cannonFiring = arView.entity(at: tapLocation)
{
print(cannonFiring.name)
print("firing Cannon")
}
}
}
Я просмотрел и прочитал Отслеживание положения камеры с помощью RealityKit и Где находится AnchorEntity .camera?