Я хочу вычислить значение колебательного смещения на основе текущего времени в секундах, чтобы любой объект мог вызвать этот метод и получить возвращенное смещение, синхронизированное с любым другим объектом, который вызывает тот же метод.
Это мой установщик для свойства locationOffset:
- (float)locationOffset
{
float currentTime = [[NSDate date] timeIntervalSince1970];
locationOffset = sinf(currentTime);
CCLOG(@"--- current time = %1.9f, location offset = %1.1f", currentTime, locationOffset);
return locationOffset;
}
Я называю это 60 Гц, и выход выглядит так:
--- current time = 1316013568.000000000, location offset = -0.1
... и так и останется. Должно ли все после десятичного числа быть нулем?
Я ожидаю, что смогу настроить частоту, масштабируя currentTime и «длину волны», масштабируя смещение, но мне просто нужно, чтобы мой синусоидальный locationOffset качался взад-вперед в зависимости от времени.
Похоже, что смещение местоположения должно циклически изменяться от -1 до 1 каждые 2pi секунды.
РЕДАКТИРОВАТЬ: Добавление метода, который работает сейчас, как и должно.
- (float)locationOffset
{
double currentTime = [[NSDate date] timeIntervalSinceReferenceDate];
locationOffset = sin(2.0f*currentTime) * 12.0f;
// CCLOG(@"--- current time = %1.9f, location offset = %1.1f", currentTime, locationOffset);
return locationOffset;
}
Он циклически повторяется каждые пи-секунды и имеет величину +/- 12.