【问题标题】:SpriteKit Adding Sprites on Collision DetectionSpriteKit 在碰撞检测中添加精灵
【发布时间】:2014-05-14 23:10:04
【问题描述】:

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

-(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 为什么会这样?

【问题讨论】:

  • 在此代码 sn-p 中,如果 self.size 为 0,0,则它只能为 0,0。设置断点并检查。

标签: ios sprite-kit


【解决方案1】:

你的代码

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

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

【讨论】:

    猜你喜欢
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多