我无法理解SpriteKit中的坐标系统。 文档说明场景大小为1024x768,场景的锚点是CGPointZero(即场景的左下角)。所以在横向方向上,场景的CGPoint(0,0)位于视图的左下角 - 一切都很好。 但是,如果ScaleMode是AspectFill,那么(正如documentation描述的那样)某些场景会以纵向方向裁剪 - 这也是有意义的。 令我感到困惑的是,裁剪似乎是基于CGPoint的AnchorPoint(0.5,0.5)。即在场景位置CGPoint(0,0)绘制的具有AnchorPoint CGPoint(0,0)的精灵以纵向裁剪。 我的问题是:"如果场景的锚点是CGPoint(0,0)而ScaleMode是AspectFill,为什么CGPoint(0,0)的节点会被裁剪?难道不能确保场景的左下角始终位于视图的左下角吗?"
答案 0 :(得分:0)
不要将您的场景与您的观点混淆。
是的,对于您的场景,默认为左下角。但缩放适用于从场景到视图。默认情况下,您的场景将添加到视图的中心。
就缩放而言,想象它就像一个气球,你要围绕一个盒子。
从所有端部均匀拉出,直到整个气球围绕盒子的边缘。
然后通过取2个矩形框并将它们放在两侧以使你的盒子顶部变成所需的形状来考虑Aspect填充。
这就是为什么(0,0)最终会被裁掉的原因。
锚点适用于场景内发生的事情,而不是外部。
您需要更改视图锚点(我不知道)才能达到您想要的效果,或者只需将场景移动到右侧(sceneWidth * scaleFactor) - viewWidth