【SwiftUI、RealityKit】3.1 每点击一次放置一个AR实体

该教程介绍了如何利用SwiftUI和RealityKit创建一个增强现实应用。在文件MyApp中定义主视图,然后在Reality文件中,结合ARViewContainer实现AR功能,包括手势识别,当用户点击时在水平平面上加载3D蓝色方块模型。
摘要由CSDN通过智能技术生成

程序效果:

 

程序代码(您需要创建两个文件)

文件1(MyApp):

import SwiftUI
@main
struct MyApp: App {
    var body: some Scene {
        WindowGroup {
            Reality()
        }
    }
}

文件2(Reality):

import SwiftUI
import RealityKit
struct Reality: View {
    var body: some View {
        ZStack{
            ARViewContainer()
                .edgesIgnoringSafeArea(.all)
            Image(systemName: "moonphase.full.moon.inverse")
        }
    }
}
struct ARViewContainer: UIViewRepresentable {
    func makeUIView(context: UIViewRepresentableContext<ARViewContainer>) -> ARView {
        let arView = ARView(frame: .zero, cameraMode: .ar, automaticallyConfigureSession: true)
        let anchorEntity = AnchorEntity(plane: .horizontal)
        arView.Placement()//放置物体 1/2
        arView.scene.addAnchor(anchorEntity)
        return arView
    }
    func updateUIView(_ uiView: ARView, context: Context) {}
}
extension ARView{//放置物体 2/2
    func Placement() {
        let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(handleTap(recognizer:)))
        self.addGestureRecognizer(tapGestureRecognizer)//点击行为1/2
    }//手势
    @objc func handleTap(recognizer: UITapGestureRecognizer) {//手势内容
        let anchorEntity = AnchorEntity(plane: .horizontal)//水平类锚点
        let ARentity = ModelEntity(mesh: MeshResource.generateBox(size: 0.2/2, cornerRadius: 0.05/5), materials: [SimpleMaterial(color: .blue, isMetallic: true)])//实体(加载模型)
        anchorEntity.addChild(ARentity)
        self.scene.addAnchor(anchorEntity)//点击行为2/2
    }
}

备注:创建一个手势,点击将加载实体。

目录:RealityKit AR教程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值