ios - 如何设置 SKCameraNode 相对于节点的 x 和 y 位置?

标签 ios swift swift3 sprite-kit

我正在以编程方式设置我的相机节点。我的目标是让摄像机跟随玩家节点的 x 轴,但让摄像机的 y 轴高于“player.position.y”,类似于“player.position.y + 300”。

我在谷歌上搜索了一段时间后发现了这个问题:

cam.position = CGPoint(x: player.position.x, y: player.position.y + 500)

我把它和相机的设置一起放在 didMove(to:) 中:

cam = SKCameraNode() //initialize and assign an instance of SKCameraNode to the cam variable.
    self.camera = cam //set the scene's camera to reference cam
    //cam.setScale(1.3)

cam.position = CGPoint(x: player.position.x, y: player.position.y + 500)
    addChild(cam) //have cam be a child

我试过将它放在 add child(cam) 行之前和之后,但是 cam.position 行没有效果。

我已经尝试将我的相机设置为玩家节点和场景的子节点,但是无论使用哪种方法我都可以让相机跟随玩家但我无法弄清楚如何操纵 X 和 Y分别地。我能够影响相机位置的唯一方法是使用“设置比例”,但这更像是全局放大/缩小。

如有任何建议,我们将不胜感激。

编辑:答案的第一部分就是我所需要的:

cam = SKCameraNode()
player.addChild(cam)
cam.position = CGPoint(x:0,y:500)
self.camera = cam

最佳答案

为什么不让相机成为玩家的 child ,然后将相对位置设置为 +500,这样您就不必担心再次设置相机的 x 位置

cam = SKCameraNode()
player.addChild(cam)
cam.position = CGPoint(x:0,y:500)
self.camera = cam

然后在结束更新时,根据需要设置相机 y:

let cam = player.childNode[0] as! SKCameraNode //Do whatever you need to do to find the camera
cam.position.y = 500 - player.position.y //This way if the player goes up 1 point, the camera moves down one point thus keeping it on the same spot

关于ios - 如何设置 SKCameraNode 相对于节点的 x 和 y 位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44825845/

相关文章:

iOS 应用程序在不使用 iOS 11 API 的情况下遵守 iPhone X 屏幕限制

iphone - 具有项目间间距的 ​​UICollectoinView 水平滚动

ios - 在我的应用程序上显示错误的启动图像。尝试以多种方式替换它

arrays - 如何在 Swift 中的方向数组缩减挑战中正确实现堆栈

swift - 如何观察 .next 事件的多个变量,同时忽略 RxSwift 中的值

ios - UnsafeMutablePointer 初始化

ios - 进入后台保存数据 - ResearchKit

ios - 向使用 SnapKit 定位的 UIView 添加阴影

ios - Swift 3、iOS 10+、xCode 8.3+、Quickblox - 在保持纵横比/视频分辨率的同时切换全屏远程流

ios - 在我的简单案例中,http 正文中的 JSON 数据包含特殊字符