Влияние timeStep на физические тела в SceneKit

В SceneKit у меня была проблема при столкновении двух динамических сфер, когда одна из них ударилась в другую с высокой скоростью, она проходила внутри нее. После того как я увеличился physicsWorld.timeStep значение от 1/60 в 1/300, столкновение сфер становится совершенным. Однако в этот момент, если сфера ударяется о неподвижную стену, она начинает скользить вдоль стены (как липкая) вместо отражения от стены. Мяч начал терять столько энергии после столкновения со стеной.

Когда timeStep был 1/60, мяч подпрыгивал на стене даже на такой низкой скорости, вместо этого прилипая к стене. На какие параметры влияет физика тела стены или шара на timeStep?

Параметры стены;

    let ballMass: CGFloat = 0.08
    physicsWorld.timeStep = 1/300

    let wallGeometry = SCNPlane(width: (maxX - minX), height: wallHeight)
    wallGeometry.firstMaterial?.diffuse.contents = UIColor.red
    wallGeometry.firstMaterial?.isDoubleSided = true
    let shapeWallGeometry = SCNPhysicsShape(geometry: wallGeometry, options: nil) //su an lik bir ise yaramiyor

    let wallNode = SCNNode(geometry: wallGeometry)

    wallNode.position = SCNVector3( x: Float(xCenter), y: Float(minY-cushionHeight/2), z: Float(cushionHeight)/2 )

    wallNode.physicsBody = SCNPhysicsBody(type: .static, shape: shapeWallGeometry)
    wallNode.physicsBody?.restitution = 0.82
    wallNode.physicsBody?.friction = 0.91

    wallNode.physicsBody?.categoryBitMask = PhysicsCategory.WallType.rawValue | PhysicsCategory.GravityType.rawValue
    wallNode.physicsBody?.collisionBitMask = PhysicsCategory.BallOneType.rawValue | PhysicsCategory.BallTwoType.rawValue | PhysicsCategory.BallThreeType.rawValue | PhysicsCategory.GravityType.rawValue
    wallNode.physicsBody?.contactTestBitMask = PhysicsCategory.BallOneType.rawValue | PhysicsCategory.BallTwoType.rawValue | PhysicsCategory.BallThreeType.rawValue
    self.rootNode.addChildNode(wallNode)

0 ответов

Другие вопросы по тегам