ARKit从入门到精通(4)--关于physics body

本文详细介绍了如何在ARKit中使用SceneKit创建并应用物理学特性,包括为平面添加静态和动态Physics Body,施加力,使用粒子系统以及添加滑动手势来控制火箭发射。通过实例演示,阐述了物理模拟在AR开发中的应用。
摘要由CSDN通过智能技术生成

 

本部分我们主要在Xcode通过原生方法实现一个小案例(发射一个火箭)掌握ARKit的physics特性。

首先下载基础工程,在此基础上进行开发:

https://pan.baidu.com/s/1-LOv4kvEy1oS8fQyoD1ALw  密码:vmv7

Step 1: 前提

在Xcode打开下载的项目,并build运行:

physics-camera-access

 

需要将physics body附加到SCNPhysicsBody中。SCNPhysicsBody是向节点添加物理模拟的对象。

SceneKit在渲染帧之前,对场景中具有附加物理实体的节点执行物理计算。这些计算包括重力、摩擦力和与其他物体的碰撞。基本上,在每个渲染帧之前,都要进行物理计算。

physics body有三种类型static, dynamic, and kinematic。

1.static:静态physics body类型不受力或碰撞的影响,不能移动。

2.dynamic:动态物理体是一种受力和碰撞影响的物理体。

3.kinematic:当你创造一个游戏,你需要用你的手指推一个方块。所以你创造了一个“隐形”的推砖器,它是由你的手指运动触发的。“隐形”块不受其他块的影响,但是“隐形”块在接触时移动其他块。kinematic物理体是一种不受力或碰撞影响的物理体,但它在运动时能引起影响其他物体的碰撞。

Step 2: 创建Physics Body

首先是检测到水平面,然后为其添加physics body

func update(_ node: inout SCNNode, withGeometry geometry: SCNGeometry, type: SCNPhysicsBodyType) {
    let shape = SCNPhysicsShape(geometry: geometry, options: nil)
    let physicsBody = SCNPhysicsBody(type: type, shape: shape)
    node.physicsBody = physicsBody
}

在这个方法中,我们创建了一个SCNPhysicsShape对象。SCNPhysicsShape对象表示物理体的形状。当SceneKit检测到场景中SCNPhysicsBody对象的接触时,它使用你定义的物理形状。

接下来,创建一个SCNPhysicsBody对象,方法是将.static传递给类型参数,并将SCNPhysicsShape对象传递给shape参数。

添加静态Physics Body

在renderer(_:didAdd:for:)方法中为检测到的平面附加一个静态物理体。在添加planeNode作为子节点之前,调用以下方法:

update(&planeNode, withGeometry: plane, type: .static)

renderer(_:didAdd:for:)方法的完整代码如下:

fun
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值