モバイルプラットフォームでアナログスティックをシミュレートしようとしています。
指の位置とスティックの半径に基づいて-1から1までの値を返すスティックベクトルを計算します。
public void calcStickVector(float x, float y)
{
float cx = getCenterX();
float cy = getCenterY();
float distX = x - cx;
float distY = y - cy;
distX /= getRadius();
distY /= getRadius();
distX = JMath.clamp(-1.0f, 1.0f, distX);
distY = JMath.clamp(-1.0f, 1.0f, distY);
stickVector.x = distX;
stickVector.y = distY;
}
public RectF getInnerStickRect()
{
float r = getInnerRadius();
float cx = getCenterX() + (getRadius() * getStickVector().x);
float cy = getCenterY() + (getRadius() * getStickVector().y);
innerStickRect.left = cx - r;
innerStickRect.top = cy - r;
innerStickRect.right = cx + r;
innerStickRect.bottom = cy + r;
return innerStickRect;
}
それはほとんど機能しますが、視覚的には、内側のスティックを動かすと、円を描くのではなく、正方形を形成しているように見えます。私のロジックに何か問題がありますか?
ありがとう