在sprite工具包中启用无限背景时,重力不会影响节点

时间:2014-11-17 01:51:19

标签: objective-c sprite-kit

当我实现以下代码时,我的主角不受重力影响。

SKSpriteNode *ball = [SKSpriteNode spriteNodeWithImageNamed:@"ball.png"];
ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:ball.size.height/2];
ball.physicsBody.dynamic = YES;
ball.physicsBody.linearDamping = NO;
ball.physicsBody.angularDamping = NO;
ball.physicsBody.friction = 0;
ball.physicsBody.usesPreciseCollisionDetection = YES;
ball.position = CGPointZero;
ball.zPosition = 1;
[myWorld addChild:ball];

这是背景

for (int i = 0; i < 2; i++) {
    SKSpriteNode * bg = [SKSpriteNode spriteNodeWithImageNamed:@"background"];
    //bg.anchorPoint = CGPointZero;
    bg.position = CGPointMake(i * bg.size.width, 0);
    bg.name = @"background.png";
    //bg.physicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:CGPointMake(-bg.frame.size.width/2, -bg.frame.size.height/2 +20) toPoint:CGPointMake(bg.frame.size.width/2, -bg.frame.size.height/2 + 20)];
    bg.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:bg.frame];
    [self addChild:bg];
}

我在这里尝试了代码Stack discussion here,除了y轴上的重力外,一切都按预期工作。

场景中的重力:

if (self = [super initWithSize:size]) {
    self.anchorPoint = CGPointMake(0.5, 0.5);
    self.physicsWorld.gravity = CGVectorMake(0, -2);
    [self startGravityIncrease];

........

- (void)startGravityIncrease {
    SKAction *blockAction = [SKAction runBlock:^{
        CGVector gravity = self.physicsWorld.gravity;
        gravity.dx += 0.6;
        gravity.dy -= 0.3;
        self.physicsWorld.gravity = gravity;
    }];
    SKAction *waitAction = [SKAction waitForDuration:5];
    SKAction *sequenceAction = [SKAction sequence:@[waitAction, blockAction]];
    SKAction *repeatAction = [SKAction repeatActionForever:sequenceAction];

    [self runAction:repeatAction];
}

我在这里做错了什么?

0 个答案:

没有答案