Приложите усилие к SCNSphere в направлении, на которое указывает задняя камера - PullRequest
0 голосов
/ 29 июня 2018

Я прочитал много ответов от stackoverflow, но ни один из них не добавил пример кода, который я могу получить от

Я пытался

func createBall (with velocityMultiplier:Float = 0 ,touchLocation:CGPoint = .zero) {

    let geo = SCNSphere(radius: 1)
    var node = SCNNode(geometry: geo)
    node.geometry?.firstMaterial?.diffuse.contents = UIColor.cyan
    node = self.update(node, withGeometry: geo, type: .dynamic)
    node.physicsBody?.isAffectedByGravity = true
    node.physicsBody?.allowsResting = true

    let (direction,position) = getUserVector()
    node.position = position
    node.simdTransform = (sceneView.session.currentFrame?.camera.transform)!

    self.sceneView.scene.rootNode.addChildNode(node)


    let force = simd_make_float4(0, 0,-3,0)
    let rotatedForce = simd_mul((sceneView.session.currentFrame?.camera.transform)!, force)

    let vectorForce = SCNVector3(x:rotatedForce.x, y:rotatedForce.y, z:rotatedForce.z)


    node.physicsBody?.applyForce(vectorForce , asImpulse: true)

}

Работает нормально, мяч брошен из центра

Здесь Если я изменю положение Y или X на let force = simd_make_float4(0, 2,-3,0) Мяч не выбрасывается из центра, он выбрасывается на экран

Что мне нужно, так это применить положение Y и Z, чтобы заставить любую помощь цениться

...