Кажется, вы проверяете, нажата ли основная кнопка мыши дважды. От обоих
if (Input.GetMouseButtonDown(0))
и
else if (Input.GetMouseButton(0))
Кроме того, вам также придется обновлять последнюю позицию мыши в каждой итерации, где на данный момент вы делаете это только при нажатии кнопки мыши, что не является неправильным, но вам придется делать это, когда кнопка не нажата а также.
Я верю, что ваш код может быть исправлен, если вы измените его на следующее:
void FixedUpdate()
{
//Checks if it has been 0.5 seconds since last call
if (Time.fixedTime > timeToGo)
{
//Updates score on mouse down
scoreText.text = "Score: " + score + (int)mouseSpeed*0.1;
if (Input.GetMouseButtonDown(0))
{
mouseDelta = Input.mousePosition - lastPos;
score++;
//Shows mouse position and magnitude in console
Debug.Log("delta X : " + mouseDelta.x);
Debug.Log("delta Y : " + mouseDelta.y);
Debug.Log("delta distance : " + mouseDelta.magnitude);
//Updates mouseSpeed
mouseSpeed = mouseDelta.magnitude / Time.deltaTime;
}
lastPos = Input.mousePosition;
//Updates timeToGo
timeToGo = Time.fixedTime + 0.5f;
}
}
Это не решит вашу проблему с распределением баллов по пройденному расстоянию, но вы должны быть в состоянии реализовать это с помощью mouseDelta.