平らな円があり、Touch スクリプトを使用してクリックすると、円を回転させることができます。しかし、円の中心に触れてしまうと、逆に反転してしまいます。そのようなおかしな。ここで最終的には私の数学のスキルだと思いますが、誰かが見てくれれば感謝します.
float changeY = 0;
// touch position
Vector3 pos = touch.worldPos;
Vector2 curLineEnd = new Vector2(pos[0], pos[2]);
float curLineDistance = GetDistance(new Vector2(lineStart[0], lineStart[1]), curLineEnd);
if (curLineDistance < edgeWidth) {
return;
}
if(curLineDistance < 0.6)
{
float angle = GetAngle(curLineEnd, startLineEnd);
if (angle > lastAngle+2)
{
changeY += 5;
}
else if (angle < lastAngle-2)
{
changeY -= 5;
}
lastAngle = angle;
Debug.Log(angle);
//transform.eulerAngles = new Vector3(270, angle + lastY, 0);
transform.Rotate(new Vector3(0,changeY),Space.World);
}
public float GetAngle(Vector2 lineOneEnd, Vector2 lineTwoEnd)
{
float a = lineOneEnd[0] - lineStart[0];
float b = lineOneEnd[1] - lineStart[1];
float c = lineTwoEnd[0] - lineStart[0];
float d = lineTwoEnd[1] - lineStart[1];
float lineOneTan = Mathf.Atan2(a, b);
float lineTwoTan = Mathf.Atan2(c, d);
float angle = (lineOneTan - lineTwoTan) * 180 / Mathf.PI;
return angle;
}