我正在尝试设置spritenode的自定义大小。这是我的代码:
var twitterIcon = SKSpriteNode(imageNamed: "Twitter")
twitterIcon.size = CGSizeMake(80, 80)
twitterIcon.position = CGPointMake(70, self.frame.size.height - 70)
twitterIcon.zPosition = 3
twitterIcon.name = twitterCategoryName
问题是它显示为椭圆
我认为GameScene的设置方式可能存在问题 - 但我不确定
旁注 - 仅在iPhone上发生这种情况。在iPad上进行测试时,它可以正常工作。
答案 0 :(得分:1)
听起来问题是你的方面设置为Fill。这不会保持你的比例,并会导致倾斜。
你真正想要的是AspectFit或AspectFill。这些将在不改变场景宽高比的情况下调整场景大小。问题是因为你的场景是4:3会根据你的选择裁剪或添加黑条(大部分都是裁剪,但必须特别考虑放置项目)
typedef NS_ENUM(NSInteger, SKSceneScaleMode) {
SKSceneScaleModeFill, /* Scale the SKScene to fill the entire SKView. */
SKSceneScaleModeAspectFill, /* Scale the SKScene to fill the SKView while preserving the scene's aspect ratio. Some cropping may occur if the view has a different aspect ratio. */
SKSceneScaleModeAspectFit, /* Scale the SKScene to fit within the SKView while preserving the scene's aspect ratio. Some letterboxing may occur if the view has a different aspect ratio. */
SKSceneScaleModeResizeFill /* Modify the SKScene's actual size to exactly match the SKView. */
} NS_ENUM_AVAILABLE(10_9, 7_0);
这是有道理的,因为iPad是1024 x 768(与你的sks场景相同),这是4:3的宽高比,你的iPhone将是16:9(如果是iPhone 5或更高版本)。你不能在屏幕上使用它,不会出现裁剪,黑条或歪斜。
希望这是有道理的,也是有帮助的。