特定の位置に円が描かれています。速度を10fに設定すれば問題なく動かせますが、旋回し始めると非常に速くなります。明らかに (単位/秒) で動いていません。何が起こっているのかわかりません。ラジアンか何かである必要があると思ったのでarchSpeed
、速度が低下しましたが、それでも正しくありません。これが、私が基にしている円弧方程式です。
s = r * theta
私が使用している関数は次のとおりです。
private void moveOut(double deltaTime)
{
SetPosition(x += direction * speed * deltaTime, y, 0);
if (x - (direction * GetWidth() / 2f) >= centerX + radius + GetWidth() / 2f)
{
//onOutside = true;
}
Log.d(TAG, "moving out");
}
private void circleCenter(double deltaTime)
{
float angleSpeed = (float) (radius * (speed * Math.PI / 180) * deltaTime);
currentAngle += angleSpeed;
if (currentAngle >= 2 * Math.PI)
{
currentAngle = (float) (2 * Math.PI - currentAngle);
}
SetPosition(centerX + radius * FloatMath.cos(currentAngle), centerY + radius * FloatMath.sin(currentAngle), 0);
}