使用SpriteKit和SWIFT为游戏构build网格级别

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

  • 游戏将由多个层次组成,每个层次都将是独一无二的。
  • 你会播放一个对象(这里是明星),这是在网格上移动。
  • 物体只能移动到底部,不能返回。
  • 一个级别由多个案例组成,每个案例都会有不同的行为。
  • 我的水平将有一个背景,屏幕的宽度,但高度将取决于水平,我想是屏幕的高度的许多倍。
  • 背景移动取决于对象的移动

现在,我正在研究一个小原型,只是为了学习。

原

阅读了许多教程后,我的想法是使用SKSpriteNode创buildx个方块(菱形)。 并用标识符来标识正方形。

我不知道在性能方面是否是一个好的解决scheme? 他们会在一个层面上很多广场。 我不知道:)

我们受限于一个场景中的节点数量吗?

我觉得没有必要 你也可以使用一个由方格CGPath填充的SKSpriteNode背景,如果你想增加难度,你可以做一个非常快的游戏。 您可以通过使用每个CGPath来组织游戏的“function”部分,并且在这种情况下必须更改方块时,可以使用代表该方块的CGPath创build一个正方形,例如,为其指定一个名称很容易理解它是谁,使用涉及的CGPath并使用这个SKSpriteNode来:

  • 盖平方米的背景
  • 发挥爆炸效果
  • 改变一个正方形的颜色,而不是一般的方形颜色
  • 等等..

PS:我已经看到你想创build一个scrollView,在这里有一个很好的Spritekit库叫做CustomScrollView ,可以是有用的,只需要使用:

 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) 

更新 :关于你的评论,答案是肯定的:当你使用一个path工作时,你使用了一组以点为单位的元素(看看这个post了解如何)。

您可以使用本机:

 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#>)