任意のオブジェクトがこのメソッドを呼び出すことができ、同じメソッドを呼び出す他のオブジェクトに同期されたオフセットが返されるように、秒単位の現在の時間に基づいて振動オフセット値を計算したいと考えています。
これは、locationOffset プロパティのセッターです。
- (float)locationOffset
{
float currentTime = [[NSDate date] timeIntervalSince1970];
locationOffset = sinf(currentTime);
CCLOG(@"--- current time = %1.9f, location offset = %1.1f", currentTime, locationOffset);
return locationOffset;
}
私はこれを 60Hz と呼んでおり、出力は次のようになります。
--- current time = 1316013568.000000000, location offset = -0.1
・・・と、このままです。小数点以下はすべてゼロにする必要がありますか?
currentTime をスケーリングすることで周波数を調整し、オフセットをスケーリングすることで「波長」を調整できると期待していますが、正弦波の locationOffset を時間に基づいて前後にスイングさせる必要があります。
位置オフセットは、2pi 秒ごとに -1 から 1 に循環する必要があるようです。
編集:現在動作するメソッドを追加する必要があります。
- (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;
}
これは pi 秒ごとに循環し、マグニチュードは +/- 12 です。