1

Ok, what I am trying to do is create physics body/colliding boundaries for my character, my SCNNode, in my SceneKit game Im building with ARKit. This is so my node cannot move out of the user's vision/go so far away that it isn't visible as it is currently doing. My SCNNode is moved by user input, so I need to make "world boundaries" while ARKit still doesn't have vertical wall detection

I know you can place an object some set distance ahead of you in the real world as stated here Understand coordinate spaces in ARKit and I have done that with this, just making a box with physics body here -

let box = SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0) //change to be VERY TALL - need to make it a giant room
        node.physicsBody = SCNPhysicsBody(type: SCNPhysicsBodyType.static, shape: nil)
        box.firstMaterial?.diffuse.contents = UIColor.red
        box.firstMaterial?.isDoubleSided = true
        node = SCNNode(geometry: box)
node.position = SCNVector3(view.pointOfView.simdWorldFront + float3(0, 0, -0.5)) //random distance ahead

And this works, and I could add it as a child node of camera so it moves as user moves, but I don't think Im doing this correctly.

Essentially I need 4 walls to box the user/SCNNode in (corral the character) that are infinitely high, and at the VERY edge of the horizontal plane that the user can see. Really I don't know what this distance should be in the x plane:

+ float3(0, 0, -0.5)

How would you create AR boundaries like this?

blue
  • 7,175
  • 16
  • 81
  • 179

0 Answers0