使用 SpriteKit 和 SWIFT 为游戏构建网格关卡

Build a grid level for a game with SpriteKit and SWIFT

我正在寻找构建游戏关卡的最佳方式:

目前,我正在制作一个小原型,只是为了学习。

看了很多教程,我的想法是用SKSpriteNode创建x个正方形(菱形)。并用标识符识别方块。

不知道从性能上来说是不是一个好的方案?他们将在一个层面上有很多方块。我没有意识到:)

一个场景的节点数有限制吗?

我觉得没必要。您还可以使用由方块 CGPath 填充的单个 SKSpriteNode 背景,如果您想增加难度级别,您可以制作非常快的游戏。您可以通过处理每个 CGPath 来组织游戏的 "functional" 部分,并且在这种情况下当您必须更改一个正方形时,您可以使用代表该正方形的 CGPath 创建一个正方形,给它是一个基于例如索引的名称,以便轻松了解它是谁,使用涉及的 CGPath 并使用此 SKSpriteNode 到:

  • 覆盖方形背景
  • 制作爆炸效果
  • 改变正方形的颜色而不是一般的正方形颜色
  • 等..

P.S.: 我看到你想创建一个 scrollView,swift 中有一个很好的 Spritekit 库,叫做 CustomScrollView here,它很有用,只需使用:

scrollView = CustomScrollView(frame: CGRect(x: 0, y: 0, width: self.frame.size.width, height: self.frame.size.height), scene: self, moveableNode: moveableNode, scrollDirection: .Vertical)
scrollView.contentSize = CGSizeMake(scrollView.frame.size.width, scrollView.frame.size.height * 3) // makes it 3 times the height
view?.addSubview(scrollView)

更新:关于你的评论,答案是肯定的:当你使用路径时,你使用的是一组按点组织的元素(看看这个 了解如何)。

您可以使用本机:

CGPathContainsPoint(<#T##path: CGPath?##CGPath?#>, <#T##m: UnsafePointer<CGAffineTransform>##UnsafePointer<CGAffineTransform>#>, <#T##point: CGPoint##CGPoint#>, <#T##eoFill: Bool##Bool#>)

或者使用这个:

CGPathGetPathBoundingBox(<#T##path: CGPath?##CGPath?#>)

使用它:

CGRectIntersectsRect(<#T##rect1: CGRect##CGRect#>, <#T##rect2: CGRect##CGRect#>)