SpriteKit在碰撞检测中添加精灵

时间:2014-05-13 19:53:49

标签: ios sprite-kit

我正在检测两个精灵之间的碰撞和碰撞我试图在场景中添加更多的精灵。检测到冲突时,将调用以下方法。

-(void) contactBetweenGreenBallAndRedBall:(SKPhysicsContact *) contact
{   
    if([self isLevelCompleted])
    {
        [self addRedBallsToScene:10];
    }

}

// add red balls to the scene
-(void) addRedBallsToScene:(int) numberOfRedBalls
{
    for(int i = 1; i <= numberOfRedBalls; i++)
    {
        int x = arc4random() % (int) self.size.width;
        int y = arc4random() % (int) self.size.height;

        RedBall *redBall = [[RedBall alloc] init];
        redBall.name = @"redball";
        redBall.position = CGPointMake(x, y);

        [self addChild:redBall];

        [_redBalls addObject:redBall];

        [redBall.physicsBody applyImpulse:CGVectorMake(5.0, -10.0f)];
    }
}

即使我将redBall添加到场景中,我也看不到它。场景从未显示新添加的红球。

更新:我注意到精灵正在添加但是由于某种原因它们被添加到0,0为什么会这样?

1 个答案:

答案 0 :(得分:0)

您的代码

int x = arc4random() % (int) self.size.width;
int y = arc4random() % (int) self.size.height;

有效且有效。您的问题不是实际代码,而是调用self.size ...的位置,其中返回值不反映屏幕大小。尝试从其他位置调用代码。要进行测试,请放置手动值而不是随机值。