【问题标题】:Camera follow falling ball相机跟随落球
【发布时间】:2015-02-05 17:09:17
【问题描述】:

我正在尝试实现一个场景,该场景由一个球从高处落下并从地板上弹起,我还希望相机在整个过程中跟随球。 Bellow 是一种尝试,但球似乎不受重力影响,因为代码底部附近的 println 始终输出 100。但实际上,球在屏幕上短暂停留了片刻,很快就从屏幕上掉了下来。我做错了什么?

class obj {
    var sn_node: SCNNode
    init() {
        let geom = SCNSphere(radius: 2.0)
        sn_node = SCNNode(geometry: geom)
        sn_node.position = SCNVector3Make(0, 100, 0)
        sn_node.physicsBody = SCNPhysicsBody.dynamicBody()
    }
}

var obj = obj()

class SceneKitController: NSViewController,SCNSceneRendererDelegate {

    var _scene:SCNScene!
    var _cameraNode:SCNNode!
    var _floorNode:SCNNode!

    override func viewDidLoad() {
        super.viewDidLoad()
        setup()
    }

    func setup() {
        let sceneView = view as SCNView

        sceneView.backgroundColor = NSColor.blackColor()

        setupScene()
        sceneView.scene = _scene
        sceneView.delegate = self

        sceneView.jitteringEnabled = true
        sceneView.autoenablesDefaultLighting = true

        var newPos = obj.sn_node.position
        newPos.z += 10
        _cameraNode.position = newPos
        sceneView.pointOfView = _cameraNode
    }

    func setupScene() {
        _scene = SCNScene()
        setupEnviroment()
        setupSceneElements()
        setupInitial()
    }

    func setupEnviroment() {
        //create main camera
        let camera = SCNCamera()
        _cameraNode = SCNNode()
        _cameraNode.camera = camera

        //floor
        var floor = SCNFloor()
        floor.reflectivity = 0;
        _floorNode = SCNNode(geometry: floor)
        _floorNode.physicsBody = SCNPhysicsBody.staticBody()
        _scene.rootNode.addChildNode(_floorNode)
    }

    func setupSceneElements() {

    }

    func setupInitial() {
        _scene.rootNode.addChildNode(obj.sn_node)
    }

    func renderer(aRenderer: SCNSceneRenderer, didSimulatePhysicsAtTime time: NSTimeInterval){
        var newPos = obj.sn_node.position
        println(newPos.y)
    }
}

【问题讨论】:

    标签: swift scenekit


    【解决方案1】:

    obj.sn_node.presentatioNode.position 会给你你想要的。

    【讨论】:

      猜你喜欢
      • 2017-08-28
      • 2016-02-24
      • 1970-01-01
      • 2022-10-04
      • 2016-04-18
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      • 1970-01-01
      相关资源
      最近更新 更多