Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 使用Swift理解坐标系SpriteKit的问题_Ios_Sprite Kit_Swift - Fatal编程技术网

Ios 使用Swift理解坐标系SpriteKit的问题

Ios 使用Swift理解坐标系SpriteKit的问题,ios,sprite-kit,swift,Ios,Sprite Kit,Swift,我使用Swift无法完全掌握SpriteKit的坐标系。我看过很多参考资料,包括苹果开发文档,但出于某种原因,我感到非常困惑(我相信这一定很简单) 我有一个从SKScene继承的GameSecene类。我只是尝试使用各种坐标向屏幕添加一个SKSpriteNode,以适应屏幕布局。我相信,当您创建任何SKNode并通过执行以下操作为其提供位置时 var node = SKSpriteNode(color: UIColor.brownColor(), size: CGSizeMake(100, 10

我使用Swift无法完全掌握SpriteKit的坐标系。我看过很多参考资料,包括苹果开发文档,但出于某种原因,我感到非常困惑(我相信这一定很简单)

我有一个从SKScene继承的GameSecene类。我只是尝试使用各种坐标向屏幕添加一个SKSpriteNode,以适应屏幕布局。我相信,当您创建任何SKNode并通过执行以下操作为其提供位置时

var node = SKSpriteNode(color: UIColor.brownColor(), size: CGSizeMake(100, 100))
node.position = CGPointMake(0, 0)
然后使用

self.addChild(node)
提供给节点的坐标是父节点中的坐标。这是否意味着已创建的棕色正方形应放置在左下角

显然不是这样,这让我很困惑。我正在使用iPhone 5s模拟器进行纵向测试


当我将位置设置为(350,50)时,精灵节点仅出现在左下角。

选择
游戏场景。sks
在项目导航器中,选择
SKScene
(周围应有黄色边框),并将其大小属性设置为320点x 569点(假设为iPhone5/5S)不管怎样,这都是问题所在。另外,请确保您仔细检查它,因为我确信它在我身上变回了1024x768,但现在似乎正在工作。

在函数viewDidLoad()的GameViewController类中,添加以下代码行:

scene.size = skView.bounds.size

是否对节点或场景上的锚点属性进行任何修改?这是一个景观游戏,如果是这样的话,你如何以及在哪里展示你的场景?我没有做任何事情来锚定点属性,这是不是我遗漏了什么?我已经将设备设置为纵向,我正在使用标准的游戏模板代码。场景显示在标准游戏模板提供的默认GameViewController中。任何节点的默认定位点都是0,0,即中心。我没有接触过swift,但是创建一个新的SKSprite,将其添加到SKScene,然后将其位置设置为0,0,与不设置其位置相同。我猜问题在于SKScene比屏幕大,或者没有在屏幕上居中。我也看到了这一点,我正在将SKSpriteNode直接添加到SKScene(因此它位于节点树的根上),锚定不变。要使精灵位于设备左下角的中心,我必须设置sprite.position=CGPoint(x:300,y:0)。我尝试过改变故事板中的视图大小,并在GameSecene.sks中玩游戏,但运气不好,我错过了什么或者有什么东西被窃听了?这似乎并没有解决我的问题。除非我做错了。我选择了GameSecene.sks,它看起来只是一个黄色的矩形,我已经将值从1024*768更改为320*569,但我仍然必须将其设置为300,而不是0。有什么想法吗?好的,在完成这个更改之后,重新启动Xcode和模拟器,一切似乎都正常了DGlad工作正常,明天我将进一步调查并编辑我的答案,关于这一点,我还有一些事情要检查。在viewDidLoad方法中,视图的最终大小可能还不知道。有时,正确实现viewWillLayoutSubviews(而不是viewDidLoad)进行场景初始化是一个不错的选择。