Это действительно причуда C #, сначала мне понадобилось время, чтобы получить ее
Проблема в том, что transform.position - это не поле, а метод установки / получения (внутренняя пара методов, представьте его как Vector3 GetPosition () и SetPosition (Vector3), что означает, что вам нужно передать всю структуру в него нельзя просто установить x или y (так как метод не может быть вызван, пока у вас не будут все параметры.
К счастью, обходной путь действительно прост
Vector3 temp = ant.transform.position; // use a getter
temp.x = generateX(); // modify a struct
temp.y = generateY();
ant.transform.position=temp; // use a setter