Ios Spritekit-屏幕底部坐标

Ios Spritekit-屏幕底部坐标,ios,xcode,sprite-kit,Ios,Xcode,Sprite Kit,屏幕底部的坐标是多少。。。或者如何在spritekit中的屏幕底部创建“地板” 抱歉,我对spritekit中的屏幕坐标理解得不太好。您需要理解苹果文档中解释的Sprite套件坐标系 以下是如何在SpriteKit中的屏幕底部创建地板: SKNode *floor = [SKNode node]; node.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetMidX(self.frame),1.0

屏幕底部的坐标是多少。。。或者如何在spritekit中的屏幕底部创建“地板”


抱歉,我对spritekit中的屏幕坐标理解得不太好。

您需要理解苹果文档中解释的Sprite套件坐标系

以下是如何在SpriteKit中的屏幕底部创建地板:

SKNode *floor = [SKNode node];
node.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetMidX(self.frame),1.0 , CGRectGetWidth(self.frame), 1)];
[self addChild: floor];

您需要了解苹果文档中解释的Sprite套件坐标系

以下是如何在SpriteKit中的屏幕底部创建地板:

SKNode *floor = [SKNode node];
node.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetMidX(self.frame),1.0 , CGRectGetWidth(self.frame), 1)];
[self addChild: floor];

您需要了解苹果文档中解释的Sprite套件坐标系

以下是如何在SpriteKit中的屏幕底部创建地板:

SKNode *floor = [SKNode node];
node.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetMidX(self.frame),1.0 , CGRectGetWidth(self.frame), 1)];
[self addChild: floor];

您需要了解苹果文档中解释的Sprite套件坐标系

以下是如何在SpriteKit中的屏幕底部创建地板:

SKNode *floor = [SKNode node];
node.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:CGRectMake(CGRectGetMidX(self.frame),1.0 , CGRectGetWidth(self.frame), 1)];
[self addChild: floor];

屏幕底部的位置取决于场景使用的坐标系

开箱即用,屏幕底部将位于y坐标零处,但可能发生的一些事情会影响这一点

例如,如果在xCode中使用场景编辑器,并且场景的anchorPoint属性不是y=0,则场景的“原点”将不在屏幕底部。在最近的xCode测试版中,他们更改了默认行为,使场景的原点位于场景的中心,而不是左下角,这就解释了为什么您可能会看到屏幕中央的东西,而您希望它们位于底部

此外,“屏幕底部”将与场景中的任何育儿结构相关。例如,如果在场景中放置背景精灵,并希望将地板精灵附加到屏幕底部的精灵,则必须进行一些计算以确定放置位置,因为您将继承地板父节点(以及该节点具有的任何父节点)的平移和旋转

为了保持简单,您可以将所有内容直接放在舞台上,并手动管理它们的z顺序。这将让你,基本上,使用相同的坐标系的一切。这通常是好的;只要您不想对精灵做任何复杂的事情,就不需要复杂的节点“树”


但即使使用这种方法,场景的度量也必须动态处理。场景的宽度和高度取决于如何在不同大小的设备上显示场景。例如,iPhone4的右上角将与iPadPro的右上角位于不同的位置。关于如何处理该问题的完整讨论超出了您的问题范围,但通常,您可能希望对场景使用“参考宽度”或“参考高度”,对scaleMode使用.AspectFit或.AspectFill,并相应地设置场景大小。(即,检查视图的帧以获得场景的实际纵横比,并设置场景大小以匹配一个轴上的参考度量,并缩放另一个轴以匹配设备的纵横比。)这将允许您对所有设备使用相同的度量(尽管两个轴之一是流体).

屏幕底部的位置取决于场景使用的坐标系

开箱即用,屏幕底部将位于y坐标零处,但可能发生的一些事情会影响这一点

例如,如果在xCode中使用场景编辑器,并且场景的anchorPoint属性不是y=0,则场景的“原点”将不在屏幕底部。在最近的xCode测试版中,他们更改了默认行为,使场景的原点位于场景的中心,而不是左下角,这就解释了为什么您可能会看到屏幕中央的东西,而您希望它们位于底部

此外,“屏幕底部”将与场景中的任何育儿结构相关。例如,如果在场景中放置背景精灵,并希望将地板精灵附加到屏幕底部的精灵,则必须进行一些计算以确定放置位置,因为您将继承地板父节点(以及该节点具有的任何父节点)的平移和旋转

为了保持简单,您可以将所有内容直接放在舞台上,并手动管理它们的z顺序。这将让你,基本上,使用相同的坐标系的一切。这通常是好的;只要您不想对精灵做任何复杂的事情,就不需要复杂的节点“树”


但即使使用这种方法,场景的度量也必须动态处理。场景的宽度和高度取决于如何在不同大小的设备上显示场景。例如,iPhone4的右上角将与iPadPro的右上角位于不同的位置。关于如何处理该问题的完整讨论超出了您的问题范围,但通常,您可能希望对场景使用“参考宽度”或“参考高度”,对scaleMode使用.AspectFit或.AspectFill,并相应地设置场景大小。(即,检查视图的帧以获得场景的实际纵横比,并设置场景大小以匹配一个轴上的参考度量,并缩放另一个轴以匹配设备的纵横比。)这将允许您对所有设备使用相同的度量(尽管两个轴之一是流体).

屏幕底部的位置取决于您使用的坐标系