Установите спрайт, используя фоновое положение

Я новичок в cocos2d, поэтому, пожалуйста, помогите мне, если можете.

У меня фон движется справа налево, а фон содержит маленькие окна с 3 рядами окон.

_spaceDust1 = [CCSprite spriteWithFile:@"bg_front_spacedust.png"];
_spaceDust2 = [CCSprite spriteWithFile:@"bg_front_spacedust.png"];

    CGPoint dustSpeed = ccp(0.1 , 0.1);
    CGPoint bgSpeed = ccp(0.05 , 0.05);

    [_backgroundNode addChild:_spaceDust1 z:0 parallaxRatio:dustSpeed positionOffset:ccp(0,winSize.height / 2)];
    [_backgroundNode addChild:_spaceDust2 z:0 parallaxRatio:dustSpeed positionOffset:ccp(_spaceDust1.contentSize.width , winSize.height / 2)];

Теперь добавьте врагов, которые также движутся справа налево с той же скоростью.

        _robbers = [[CCArray alloc] initWithCapacity:kNumAstroids];
    for (int i = 0; i < kNumAstroids; ++i) {
        CCSprite *asteroid = [CCSprite spriteWithSpriteFrameName:@"robber.png"];
        asteroid.visible = NO;
        [_batchNode addChild:asteroid];
        [_robbers addObject:asteroid];
    }

в методе обновления:

      double curTime = CACurrentMediaTime();
   if (curTime > _nextRunemanSpawn) {
    float randSecs = [self randomValueBetween:0.20 andValue:1.0];
    _nextRunemanSpawn = randSecs + curTime;

    float randY = 80.0;
    float randY1 = 185.0;
    float randY2 = 293.0;
    float randDuration = [self randomValueBetween:5.2 andValue:5.2];
    float randDuration1 = [self randomValueBetween:1.0 andValue:1.0];

    CCSprite *asteroid = [_robbers objectAtIndex:_nextRobber];
    _nextRobber++;

    if (_nextRobber >= _robbers.count) {
        _nextRobber = 0;
    }
    //[asteroid stopAllActions];
    int winChoice = arc4random() % 3;
    if (winChoice == 0) {
        asteroid.position = ccp(winSize.width +asteroid.contentSize.width / 2 , randY);
        asteroid.visible = YES;

    }
    else if(winChoice == 1){

        asteroid.position = ccp(winSize.width +asteroid.contentSize.width / 2 , randY1);
        asteroid.visible = YES;

    }else {
        asteroid.position = ccp(winSize.width +asteroid.contentSize.width / 2 , randY2);
        asteroid.visible = YES;

    }



    [asteroid runAction:[CCSequence actions:[CCMoveBy actionWithDuration:randDuration position:ccp(-winSize.width-asteroid.contentSize.width, 0)],
                         [CCCallFuncN actionWithTarget:self selector:@selector(setInvisible:)],nil]];

Все идет хорошо, но я хочу установить этих врагов в окне и в случайном положении
, так как я могу установить x-аргумент врагов, чтобы его можно было зафиксировать в окне фона?


person Smith Tech    schedule 27.02.2013    source источник


Ответы (1)


По какой-то причине я не могу комментировать, поэтому это написано как ответ. Что именно ты пытаешься сделать? Я немного смущен. Похоже, вы хотите, чтобы позиция X была установлена ​​​​так, чтобы она находилась в одной из 3 случайных позиций, это правильно?

person Brandon Lassiter    schedule 28.02.2013