【发布时间】:2015-10-08 15:07:46
【问题描述】:
我正在通过编写一个简单的游戏来自学如何进行 SpriteKit 编程,该游戏需要我在横向场景的左侧布置一个方形“游戏场”。我只是使用在 XCode 中创建新的 SpriteKit“游戏”项目时获得的 1024x768 库存视图 - 没什么特别的。然而,当我在didMoveToView() 中设置游戏场时,我发现坐标系有点奇怪。首先,我希望我必须将电路板放置在 (0, 0) 位置,它才能出现在左下角。并非如此——事实证明,游戏板必须在 y 方向上增加约 96 个像素才能工作。所以我最终得到了这个奇怪的代码:
let gameFieldOrigin = CGPoint(x:0, y:96) // ???
let gameFieldSize = CGSize(width:560, height: 560)
let gameField = CGRect(origin: gameFieldOrigin, size: gameFieldSize)
gameBorder = SKShapeNode(rect: gameField)
gameBorder.strokeColor = UIColor.redColor()
gameBorder.lineWidth = 0.1
self.addChild(gameBorder) // "self" is the SKScene subclass GameScene
此外,当我向其中添加一个孩子(一个在场地内弹跳的球)时,我假设我只会使用相对坐标将其放置在中心。但是,我最终不得不使用“绝对”坐标,并且不得不再次将 y 坐标偏移 96。
我注意到的另一件事是,当我调用 touch.locationInNode(gameBorder) 时,坐标再次与边界无关,而是从边界底部的 (0, 96) 开始,而不是像我想的那样 (0, 0)猜到了。
那么我在这里错过了什么?我是否误解了有关坐标如何工作的基本知识?
[PS:我想在这个问题中添加标签“SpriteKit”,但我没有足够的代表。 :/]
【问题讨论】:
标签: ios swift sprite-kit