[英]scenekit swift spaceship jittery movement with camera follow
我目前正在迅速開發場景工具包中的游戲,並且有一只飛船在飛來飛去。 我正在使用以下代碼使相機跟隨飛船:
func renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval) {
updateCameraPosition()
}
func updateCameraPosition () {
let currentPosition = player.node.presentation.position
let x: Float = lerp(a: Float(prevCameraPosition.x), b: currentPosition.x, t: 0.03)
let z: Float = lerp(a: Float(prevCameraPosition.z), b: currentPosition.z, t: 0.03) + (cameraZoom/2)
let vector = SCNVector3(x: x, y: cameraZoom, z: z)
cameraNode.runAction(SCNAction.move(to: vector, duration: 0.2))
prevCameraPosition = currentPosition
}
func lerp (a: Float, b: Float, t: Float) -> Float {
return (1 - t) * a + t * b;
}
除了只跟隨船外,當您更改漂亮的流體攝像頭的方向時,它還會添加一些漂亮的偏移運動。
我面臨的問題是船在大部分時間里來回擺動 ,它總是沿正確的方向移動,但是幾乎看起來船的位置正向后移幾幀。 您可以在此視頻中看到這一點 。
如本視頻所示 ,沒有攝像頭的跟蹤代碼,船的移動就更加順暢
有人能看到我的代碼中可能效率低下的任何錯誤嗎? 也許有更優化的方法可以做到這一點? 任何技巧/資源/建議都非常有用!
您需要先停止先前的SCNAction,然后再應用新的SCNAction。
要使用鍵添加動作,請使用
cameraNode.runAction(SCNAction, forKey: String)
方法。
現在您可以通過該鍵刪除特定操作
cameraNode.removeAction(forKey: String)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.