Заставить мяч провалиться сквозь сетку (childnode) и сделать быстрое движение? (PhysicsBody / Аркыт) - PullRequest
0 голосов
/ 27 июня 2018

Хотите знать, как сделать, чтобы баскетбол провалился в сетку и совершил swish движение? На шаре уже есть сила тяжести, но она не будет полностью проваливаться из-за формы. Мне нужно как-то сделать сетку гибкой, чтобы позволить мячу (сфере) проходить сквозь нее при входе с верха обода. Мяч останавливается только на 1/3 пути вниз. Я экспериментирую с iOS ARKit (SceneKit) на Xcode. Спасибо!

Screenshot Photo

  1. Код для мяча.

    let ball = SCNSphere(radius: 0.15)
    
    let material = SCNMaterial()
    material.diffuse.contents = UIImage(named: "basketballSkin.png")
    ball.materials = [material]
    
    let ballNode = SCNNode(geometry: ball)
    ballNode.position = cameraPosition
    
    let physicsShape = SCNPhysicsShape(node: ballNode, options: nil)
    let physicsBody = SCNPhysicsBody(type: .dynamic, shape: physicsShape)
    
    ballNode.physicsBody = physicsBody
    
    let forceVector:Float = 6
    ballNode.physicsBody?.applyForce(SCNVector3(x: cameraOrientation.x * forceVector,y: cameraOrientation.y * forceVector ,z: cameraOrientation.z * forceVector), asImpulse: true)
    
    sceneView.scene.rootNode.addChildNode(ballNode)
    

  1. Код сети, кроме узла задней панели.

    func addBackboard(){
    guard let backboardScene = SCNScene(named: "art.scnassets/hoop.scn") else{
        return
    }
        guard let backboardNode = backboardScene.rootNode.childNode(withName: "backboard", recursively: false) else{
            return
    }
    
        backboardNode.position = SCNVector3(x: 0,y: 0.5,z: -3)
    
        let physicsShape = SCNPhysicsShape(node : backboardNode, options: [SCNPhysicsShape.Option.type: SCNPhysicsShape.ShapeType.concavePolyhedron])
        let physicsBody = SCNPhysicsBody(type: .static, shape: physicsShape)
    
        backboardNode.physicsBody = physicsBody
    
        sceneView.scene.rootNode.addChildNode(backboardNode)
        currentNode = backboardNode
    

-Luther

1 Ответ

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

Два решения стоит попробовать. Действительно круто было бы создать сеть с Particle System , это вместо классической сети вы можете поместить что-то более творческое, утонченное и яркое, напр. сеть может двигаться из-за ветра и затем изменяться при ударе мяча

Другим решением может быть создание последовательности узлов, представляющих различные изменения, понесенные сеткой, когда мяч проходит через впадину, последовательность должна начинаться, когда мяч касается какого-либо прозрачного узла внутри сетки.

Хорошо выглядишь, такой хороший вызов

...