0

平らな円があり、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;
}    
4

0 に答える 0