Два динамических узла SCN не сталкиваются (Scenekit) - PullRequest
0 голосов
/ 27 июня 2018

Я сейчас нахожусь в процессе создания игры Scenekit в ARKit.

У меня есть два динамических узла SCN, и когда они вступают в контакт друг с другом, они проходят друг через друга.

Я настроил collisionBitMask физического тела каждого узла так, чтобы он включал друг друга, например:

ballNode.physicsBody?.collisionBitMask = BodyType.floor.rawValue |  BodyType.opponent.rawValue

Я также настроил физическое тело каждого узла, чтобы оно было динамическим, чтобы на узел влияли силы и столкновения.

Когда я вызываю physicsWorld(_ world: SCNPhysicsWorld, didBegin contact: SCNPhysicsContact), он правильно регистрирует наличие столкновения между двумя узлами, однако узлы продолжают проходить друг через друга.

Когда я делаю один из узлов кинематическим, а не динамическим, он правильно блокирует другой узел, и они не проходят друг через друга. Но когда он кинематический, он не реагирует на силу, которую я к нему прикладываю, поэтому я хочу сохранить его динамичным.

Возможно ли, чтобы два динамических узла сталкивались друг с другом, не проходя через них?

1 Ответ

0 голосов
/ 28 июня 2018

Я думаю, что "physicshape" отсутствует, поэтому объявлено как "ноль"

geometryNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: nil)

Вместо того, чтобы:

let pShape = SCNPhysicsShape(geometry: SCNBox(width: 0.1, height: 0.1, length: 0.1, chamferRadius: 0.0), options: [:])
boxNode.physicsBody = SCNPhysicsBody(type: .Dynamic, shape: pShape)

Надеюсь, поможет, пожалуйста, напишите код.

Альтернативой для создания фигуры является init (узел: опции:)

...