1) Объявляет различные случайных чисел генерации функции
#define kArc4RandomMaxValue 0xFFFFFFFF
static inline double skRandf() {
return (double)arc4random_uniform(kArc4RandomMaxValue)/kArc4RandomMaxValue;
}
static inline CGFloat skRandInRange (CGFloat low, CGFloat high) {
return (skRandf() * (high - low) + low);
}
2) Определение мин/макс расстояния от текущей платформы к новому
#define kMinDistance 100
#define kMaxDistance 200
3) генерации случайных х и у значений на основе положения текущей платформы
CGFloat radius = skRandInRange(kMinDistance, kMaxDistance);
CGFloat angle = skRandf()*M_PI*2;
CGFloat x = radius * cosf(angle);
CGFloat y = radius * sinf(angle);
newPlatform.position = CGPointMake(currentPlatform.position.x+x, currentPlatform.position.y+y);
EDIT: Альтернативный метод для вычислить новое положение платформы,
#define kRangeX 100
#define kMinYDistance 100
#define kMaxYDistance 200
CGFloat x = skRandInRange(-kRangeX/2, kRangeX/2);;
CGFloat y = skRandInRange(kMinYDistance, kMaxYDistance);;
newPlatform.position = CGPointMake(currentPlatform.position.x+x, currentPlatform.position.y+y);
Sure. Я хотел бы принять ваш ответ, но я не вижу никаких галочек рядом с вашими ответами? – dendritic
Не чувствуйте себя вынужденным принять неправильный ответ. @Zaph никак не ответил на ваш вопрос и не должен настаивать на том, чтобы вы согласились в любом случае - это плохая форма. Я дам вам подсказку через секунду. – davbryn
@ davbryn Я не троллинг для репутации, это просто хороший совет. Я проголосовал за ответ 0x141E после того, как он был исправлен, и IMO oit должен быть принят. – zaph