I have created an App with SceneKit where I have a series of walls (lines made with a SCNShapeNode) and a ball (SCNNode using an SCNSphere). The ball is supposed to continue with a constant speed regardless of where it goes, just changing directions whenever it hits a wall. However, the ball slows down and comes to a stop after a short while. If I start it close to a wall, it bounces off the wall in the correct direction, but then still ends up slowing down to a stop after a short while.
Here is how the balls are created:
let sphere = SCNSphere(radius: 1.0)
var sphereNode1: SCNNode?
let sphereNode1 = SCNNode(geometry: sphere)
let theBody1 = SCNPhysicsBody(type: .dynamic, shape: SCNPhysicsShape(geometry: sphere))
sphereNode1.worldPosition = SCNVector3(0,20,0)
sphereNode1.physicsBody = theBody1
//sphereNode1.physicsBody!.velocity = SCNVector3(0.0, 2.0, 0.0)
sphereNode1.physicsBody!.applyForce(SCNVector3(0.0, 2.0, 0.0), asImpulse: true)
sphereNode1.physicsBody!.physicsShape = SCNPhysicsShape(geometry: sphere)
sphereNode1.physicsBody!.isAffectedByGravity = false
sphereNode1.physicsBody!.restitution = 1.0
sphereNode1.geometry?.materials = [sphereMaterial]
I tried both giving the ball a velocity and applying a force to it. Both resulted in the above mentioned actions. I can't seem to find anywhere in the documentation that suggests a way to resolve this. I actually did this same thing in the SpriteKit environment and everything worked fine.
Hopefully someone can tell me what I'm missing.
Thanks,
Michael