2016-05-13 103 views
2

我在Swift中有一個簡單的SceneKit項目,我在場景中添加兩個對象:一個球和一個盒子。Scenekit在場景周圍旋轉相機

我希望能夠到:

  1. 泛用1手指點擊「移動」按鈕,選擇對象,並拖動它周圍的場景旋轉的攝像頭
  2. 移動對象到新的位置(通過PanGesture)

我想這跟allowsCameraControl =假的,因爲我不能做的姿勢2)啓用它,我想進一步補充panGestures的路線。

我被卡住了,因爲我無法讓相機在現場旋轉。我有相機尋找與約束的對象之一:

let constraint = SCNLookAtConstraint(target: globalSCNNode) 
constraint.gimbalLockEnabled = true 
globalCameraSCNNode.constraints = [constraint] 

,但像這樣的平移手勢沒有做任何事情:

func panGesture(sender: UIPanGestureRecognizer) { 
let translation = sender.translationInView(sender.view!) 
var action = SCNAction.rotateByX(0, y: 0.5, z: 0, duration: 0.1) 
globalCameraSCNNode.runAction(action) 

有人能幫忙嗎? 謝謝

回答

1

LookAt約束將覆蓋您在panGesture中指定的旋轉。嘗試刪除該約束。

+0

謝謝!我拿出了約束條件,並將相機作爲孩子添加到球上,現在我可以旋轉場景。我感到非常好奇,網上沒有關於PanGestures物理學的教程或嚴肅的代碼 - 我將不得不花費更多的時間來調試不同的參數化。你知道任何好的嗎?另外,例如,如果我想查看allowCameraControl = true後面的代碼,我可以在哪裏找到它?謝謝 –

+0

SceneKit不是開源的,所以你不太可能看到那個代碼。不過,有一些提示可以在[這個答案]中自己實現(http://stackoverflow.com/a/25674762/957768)。 – rickster

+0

http://infinitered.com/2015/02/10/a-seven-foot-globe-running-on-os-x-and-an-ipad-app-created-using-rubymotion-and-scenekit/ is值得一讀。還要記住,沒有要求節點具有任何附加的SCNGeometry。你可以把你的相機放在一個看不見的「安裝臂」上。 –