Cocos2d проблема / вопрос - PullRequest
0 голосов
/ 20 мая 2011

Я делаю игру в Cocos2d.Я хочу, чтобы враги появлялись в правой и левой частях экрана, перемещались в случайную точку на экране и затем повторялись.Несмотря на мои усилия, я не могу понять это.Это должно быть относительно легко ответить, оно должно выглядеть как что-то из одного из руководств Рэя Вендерлиха.Некоторый код был бы хорош.Спасибо!

1 Ответ

1 голос
/ 20 мая 2011

Это код из учебника Рэя Вандерлиха.

[self schedule:@selector(addTarget) interval:2.0];

-(void)addTarget {

  CCSprite *target = [CCSprite spriteWithFile:@"Target.jpg"  
    rect:CGRectMake(0, 0, 27, 40)]; //Creating Sprite and setting rect

  // Determine where to spawn the target along the Y axis
  CGSize winSize = [[CCDirector sharedDirector] winSize]; //Get the screensize
  int minY = target.contentSize.height/2;
  int maxY = winSize.height - target.contentSize.height/2;
  int rangeY = maxY - minY;
  int actualY = (arc4random() % rangeY) + minY;

  // Create the target slightly off-screen along the right edge,
  // and along a random position along the Y axis as calculated above
  target.position = ccp(winSize.width + (target.contentSize.width/2), actualY);
  [self addChild:target];

  // Determine speed of the target
  int minDuration = 2.0;
  int maxDuration = 4.0;
  int rangeDuration = maxDuration - minDuration;
  int actualDuration = (arc4random() % rangeDuration) + minDuration;

  // Create the actions
  id actionMove = [CCMoveTo actionWithDuration:actualDuration 
    position:ccp(-target.contentSize.width/2, actualY)];
  id actionMoveDone = [CCCallFuncN actionWithTarget:self 
    selector:@selector(spriteMoveFinished:)];
  [target runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];

}

minY -> позиция внизу экрана maxY ---> позиция вверху экрана.rangeY ---> высота экрана.actualY ---> вычислить случайную точку между нижней частью экрана и верхней частью экрана.

target.position -> установка случайной позиции для перемещения спрайта.

actualDuration -> Получение случайной продолжительности. Так что спрайт перемещается с различной временной задержкой.

actionMove -> создание действия Move.actionMoveDone ---> После завершения действия перемещения вызывается spriteMoveFinished для удаления спрайтов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...