如何使用 Swift 在 SpriteKit 程序中初始化/移动相机?

Posted

技术标签:

【中文标题】如何使用 Swift 在 SpriteKit 程序中初始化/移动相机?【英文标题】:How does one initialize/move a camera in a SpriteKit program using Swift? 【发布时间】:2015-05-07 10:04:30 【问题描述】:

我有一张地图,它比设备的屏幕尺寸大,所以我希望用户能够通过拖动屏幕来浏览地图,类似于《部落冲突》。

如何创建相机视图以便在地图上拖动相机?

另外,当场景切换到地图时,如何自定义相机中心的起始位置?

【问题讨论】:

【参考方案1】:

swift 中没有摄像头。这个想法是您将背景添加到“世界节点”

// set up stuff you want to add to world node
let bg = SKSpriteNode(... initializer  

// make a "worldNode" that you move around
self.worldNode = SKNode()

// add your bg to the worldNode
worldNode.addChild(bg)

// add worldNode to the scene
self.addChild(worldNode)

好的,现在你有了它.. 现在你可以根据位置来移动世界

func centerViewOn(centerOn: CGPoint)  
    self.worldNode.position = CGPoint(x: -x, y: -y)

你传入玩家位置,worldNode 会移动。这就是一般的想法。

您可能需要在此处添加一些有条件的东西,以使相机不会移动太远。使用此代码,相机没有限制,并且可以超越游戏世界的边缘。您想限制它,使其在玩家到达边缘时停止跟随玩家。

【讨论】:

你在“(...初始化程序”中放了什么? 任何你想要的......你可以使用图像、纹理图集制作一个 SKSpriteNode,你可以只使用颜色和大小来制作一个。这取决于你想要做什么。 developer.apple.com/library/ios/documentation/SpriteKit/…看初始化一个新精灵 当我尝试使用代码“self.world = SKNode()”添加世界节点时,Xcode 告诉我我的 GameScene 没有名为“世界”的成员。如何将节点初始化到我的场景? 您可以删除该行,然后在场景顶部添加一个属性。让 worldNode = SKNode()

以上是关于如何使用 Swift 在 SpriteKit 程序中初始化/移动相机?的主要内容,如果未能解决你的问题,请参考以下文章

如何将SpriteKit中的单个游戏场景添加到普通的单视图Swift应用程序中

如何在情节提要中创建一个按钮以启动在 xcode swift 中使用 spritekit 创建的游戏

如何在 Swift 和 SpriteKit 中使用 UISwipeGestureRecognizer 而不是 touchesMoved?

无法使应用程序进入主菜单(Swift 4 SpriteKit)

SpriteKit + Swift - 如何通过缓动移动节点?

如何使用 Swift 在 SpriteKit 上绘制贝塞尔曲线?