2014-12-04 4 views
0

Извините, что я новичок в этом. Прямо сейчас я пытаюсь создать бесконечный случайный движущийся спрайт, который вращается в его направлении. Однако я не могу понять, как использовать случайное местоположение, созданное из randomPoint на rotateAction. В основном ошибка случайным образом вращается вместо того, чтобы использовать точку, в которой она собирается. Есть ли способ, которым я могу использовать одну и ту же случайную точку дважды?Использование случайной точки в двух действиях

-(void)moveRandom:(CCSprite*)roach 
{ 

    CGPoint randomPoint = ccp(arc4random()%480, arc4random()%320); 
    NSLog(@"%@", NSStringFromCGPoint(randomPoint)); 

    int minDuration = 2.0; 
    int maxDuration = 4.0; 
    int rangeDuration = maxDuration - minDuration; 
    int randomDuration = (arc4random() % rangeDuration) + minDuration; 

    float dY = roach.position.y - randomPoint.y; 
    float dX = roach.position.x - randomPoint.x; 
    float offset = dX<0 ? 90.0f : -90.0f; 
    float angle = CC_RADIANS_TO_DEGREES(atan2f(dY, dX)) + offset; 

    [roach runAction: 
    [CCActionSequence actions: 
     [CCActionRotateTo actionWithDuration:0.001 angle:angle], 
     [CCActionMoveTo actionWithDuration:randomDuration position: randomPoint], 
     [CCActionCallBlock actionWithBlock:^{ 
     [self performSelector:@selector(moveRandom:) withObject:roach afterDelay:0.5]; 
    }], 
     nil] 
    ]; 

ответ

0

Некоторые вещи, которые выделяются: похоже, вы пытаетесь получить угол в неправильном направлении. Условное смещение не требуется. радианы до градусов должны быть сведены на нет. Я полагаю, вы хотите:

float dY = randomPoint.y - roach.position.y; 
float dX = randomPoint.x - roach.position.x; 
float angle = -CC_RADIANS_TO_DEGREES(atan2f(dY, dX)); 

 Смежные вопросы

  • Нет связанных вопросов^_^