让一个球从网(子节点)中掉落并做一个嗖嗖运动? (PhysicsBody/ARKit)

Making a ball fall through a net (childnode) and make a swish movement? (PhysicsBody/ARKit)

想知道如何让篮球落网并做出嗖嗖的动作吗?球上已经有重力,但由于形状的原因,它不会完全掉入网内。我需要以某种方式使球网变得灵活,以允许球(球体)从篮筐顶部进入时通过。球只在下降的 1/3 处停止。我正在 Xcode 上试验 iOS ARKit (SceneKit)。谢谢!

  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
    

-路德

两个值得尝试的解决方案。一个非常酷的方法是用 Particle System 创建网络,这不是经典的网络,你可以放置更有创意、复杂和生动的东西,例如。网可以因风而移动,然后因球的撞击而改变

其他解决方案可以创建一个节点序列,代表球经过时网所遭受的不同变化,该序列应该在球接触网内的某个透明节点时开始。

好看,好挑战