Hello,
I am making a RealityKit app where a ball goes and hits some stones, and then goes back to its original position.
However, in moving back the ball always tilts a little and sometimes even goes backwards or in other directions!
I add my entities in these lines of code:
stoneEntity!.scale = [5, 5, 5] anchor.addChild(stoneEntity!) stoneEntity!.transform.translation = SIMD3<Float>(anchor.position.x, anchor.position.y, anchor.position.z) stoneX = stoneEntity!.position.x stoneY = stoneEntity!.position.y stoneZ = stoneEntity!.position.z stoneEntity?.generateCollisionShapes(recursive: true) // Add ball entity anchor.addChild(ballEntity) ballEntity.transform.translation = SIMD3<Float>(anchor.position.x, anchor.position.y, anchor.position.z + 1) ballEntity.generateCollisionShapes(recursive: true) ballEntity.physicsBody = PhysicsBodyComponent(massProperties: PhysicsMassProperties.default, material: PhysicsMaterialResource.default, mode: .kinematic) ballEntity.collision = CollisionComponent(shapes: [.generateSphere(radius: 0.1)], mode: .default, filter: .default) ballEntity.physicsBody?.isTranslationLocked = (true, true, false) view.scene.addAnchor(anchor)
And move my ball back in the code:
ballEntity.transform.translation = SIMD3<Float>(0, 0, 1)
If anyone has any ideas please could you let me know ASAP?
Thank you!
For anyone who is having the same issue, I fixed it by using ballEntity.move()
instead and putting nothing as the rotation -
let newTranslation = SIMD3<Float>(0, 0, 1) let moveController = ballEntity.move(to: Transform(scale: simd_make_float3(1, 1, 1), translation: newTranslation), relativeTo: ballEntity.self, duration: 0.2)
whereas previously (not working) I was doing this:
let newTranslation = SIMD3<Float>(0, 0, 1) let moveController = ballEntity.move(to: Transform(scale: simd_make_float3(1, 1, 1), rotation: anchor.orientation, translation: newTranslation), relativeTo: ballEntity.self, duration: 0.2)
Removing the rotation: anchor.orientation
helped as my anchor was a bit tilted or moving.