注意到场景包中节点位置进入某个边界框了吗?
Notice when node position enters certain bounding box in scene kit?
有没有办法在 SceneKit / ARKit 中当节点(例如抛球)进入某个边界框(例如篮子)时触发功能?如果没有,你会如何解决这个问题?
你必须使用球的世界位置和篮子世界位置 + 边界框来实现它。
使用它的边界框计算篮子的大小:
var (basketBoundingBoxMin, basketBoundingBoxMax) = (basket?.presentation.boundingBox)!
let size = basketBoundingBoxMax - basketBoundingBoxMin
使用这个尺寸和篮筐的世界位置来计算:
- 篮子的最小 x,y,z
- 篮子的最大 x,y,z
然后检查球的世界位置是否在篮筐的最小和最大位置内。
我可能会采用的方式。获得篮球架3D模型后
https://3dwarehouse.sketchup.com/model/fa42320b3def2c6b4741187cebbc52b3/Basketball-Hoop
我会首先为不同的元素设置 physicsShapes....篮板、杆和 ring/hoop、地板和球。然后我会计算出适合环内的圆柱体尺寸。
使用:
let cylinder = SCNCylinder(radius: 1.0, height: 0.1)
这成为箍的物理体。
hoopNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry:cylinder))
然后我会练习球与每个不同篮球的碰撞 element/node。
别忘了使用调试功能
SceneView.debugOptions = .showPhysicsShapes
这将有助于直观地调试与物理形状的碰撞,并确保物理形状被准确缩放并处于正确的位置。
如何进行设置冲突已经在之前的 post 此处得到解答...
how to setup SceneKit collision detection
您可能希望球从篮板、杆和环上反弹,但如果它击中篮筐的物理形状...您可能希望让球消失并创建漂亮的 spark/flame 动画或某物。然后你也可以获得一个记录的分数。
github 上的这款 Arkit 游戏将为您提供一个很好的模板来处理所有这些事情、碰撞、动画和计分
有没有办法在 SceneKit / ARKit 中当节点(例如抛球)进入某个边界框(例如篮子)时触发功能?如果没有,你会如何解决这个问题?
你必须使用球的世界位置和篮子世界位置 + 边界框来实现它。
使用它的边界框计算篮子的大小:
var (basketBoundingBoxMin, basketBoundingBoxMax) = (basket?.presentation.boundingBox)!
let size = basketBoundingBoxMax - basketBoundingBoxMin
使用这个尺寸和篮筐的世界位置来计算:
- 篮子的最小 x,y,z
- 篮子的最大 x,y,z
然后检查球的世界位置是否在篮筐的最小和最大位置内。
我可能会采用的方式。获得篮球架3D模型后
https://3dwarehouse.sketchup.com/model/fa42320b3def2c6b4741187cebbc52b3/Basketball-Hoop
我会首先为不同的元素设置 physicsShapes....篮板、杆和 ring/hoop、地板和球。然后我会计算出适合环内的圆柱体尺寸。
使用:
let cylinder = SCNCylinder(radius: 1.0, height: 0.1)
这成为箍的物理体。
hoopNode.physicsBody = SCNPhysicsBody(type: .static, shape: SCNPhysicsShape(geometry:cylinder))
然后我会练习球与每个不同篮球的碰撞 element/node。
别忘了使用调试功能
SceneView.debugOptions = .showPhysicsShapes
这将有助于直观地调试与物理形状的碰撞,并确保物理形状被准确缩放并处于正确的位置。
如何进行设置冲突已经在之前的 post 此处得到解答...
how to setup SceneKit collision detection
您可能希望球从篮板、杆和环上反弹,但如果它击中篮筐的物理形状...您可能希望让球消失并创建漂亮的 spark/flame 动画或某物。然后你也可以获得一个记录的分数。
github 上的这款 Arkit 游戏将为您提供一个很好的模板来处理所有这些事情、碰撞、动画和计分