在横向方向上在SKScene initWithSize方法中添加SKSpriteNode的问题

时间:2014-06-04 03:25:25

标签: ios objective-c sprite-kit

当尝试在我的场景initWithSize方法中的位置0,0处添加SKSpriteNode时,它在x轴上偏移。这是因为位置仍然保持“纵向”方向的值。

我通过在视图控制器的“viewWillLayoutSubviews”方法中添加我的场景来遵循以下article中的建议,但我仍然遇到偏移问题。

这是initWithSize方法:

-(id)initWithSize:(CGSize)size {    

if (self = [super initWithSize:size]) {
    self.userInteractionEnabled = YES; 

    self.backgroundColor = [SKColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
    self.physicsWorld.gravity = CGVectorMake(0.0f, -1.0f);

    self.physicsWorld.contactDelegate = self;

    SKSpriteNode *n1 = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(size.width,20)];
    n1.position = CGPointMake(0, 0);
    n1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:n1.size];
    n1.physicsBody.contactTestBitMask = catCategory;
    n1.physicsBody.dynamic = NO;

    n1.physicsBody.categoryBitMask = floorCategory;
    [self addChild:n1];

}
return self;

}

关于Ray Wanderlich's文章,我可以通过使用偏移量来获得成功,并在添加精灵时将其应用到位置,但是有更好的方法,对吗?

-(id)initWithSize:(CGSize)size {    
float center = 240.0;

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPhone && IS_WIDESCREEN) {
    center = 284.0;
}
if (self = [super initWithSize:size]) {
    self.userInteractionEnabled = YES; 

    self.backgroundColor = [SKColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0];
    self.physicsWorld.gravity = CGVectorMake(0.0f, -1.0f);

    self.physicsWorld.contactDelegate = self;

    SKSpriteNode *n1 = [SKSpriteNode spriteNodeWithColor:[UIColor blueColor] size:CGSizeMake(size.width,20)];
    n1.position = CGPointMake(center, 0);
    n1.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:n1.size];
    n1.physicsBody.contactTestBitMask = catCategory;
    n1.physicsBody.dynamic = NO;

    n1.physicsBody.categoryBitMask = floorCategory;
    [self addChild:n1];

}
return self;

}

我想找到一个不依赖于硬编码偏移的全面解决方案,无论是iPad还是iPhone,它都可以横向使用。

感谢。

0 个答案:

没有答案