使用 SpriteKit 和 SWIFT 为游戏构建网格关卡
Build a grid level for a game with SpriteKit and SWIFT
我正在寻找构建游戏关卡的最佳方式:
- 游戏由多个关卡组成,每个关卡都有
独一无二。
- 你将扮演一个运动中的物体(这里是星星)
在网格上。
- 对象只能移动到底部,不能返回。
- 一个关卡是由很多个case组成的,每个case都会有不同的
行为。
- 我的关卡会有背景、屏幕宽度,但是
高度将取决于水平,我想是高度的很多倍
屏幕。
- 背景随着物体的移动而移动
目前,我正在制作一个小原型,只是为了学习。
看了很多教程,我的想法是用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#>)
我正在寻找构建游戏关卡的最佳方式:
- 游戏由多个关卡组成,每个关卡都有 独一无二。
- 你将扮演一个运动中的物体(这里是星星) 在网格上。
- 对象只能移动到底部,不能返回。
- 一个关卡是由很多个case组成的,每个case都会有不同的 行为。
- 我的关卡会有背景、屏幕宽度,但是 高度将取决于水平,我想是高度的很多倍 屏幕。
- 背景随着物体的移动而移动
目前,我正在制作一个小原型,只是为了学习。
看了很多教程,我的想法是用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#>)