Влияние timeStep на физические тела в SceneKit - PullRequest
0 голосов
/ 11 сентября 2018

В 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)
...