Я создал через сценарии строки дочерних прямоугольников со случайной шириной. Все они названы как Line0, rectangle0, rectangle1, line2, restangle0, et c. Все они имеют присоединенный блок коллайдера 2d, линии и прямоугольники.
Теперь я пытаюсь переместить эти линии, только по оси x, с помощью следующего кода. Иногда это работает, но иногда только один раз на строку, иногда несколько раз на строку, некоторые строки не перемещаются, это совершенно случайно, и я не могу понять, почему.
К строкам прикреплен скрипт для управления перемещениями, уже пробовал с локальным расположением и такими же результатами:
public class line : MonoBehaviour
{
float startPosX;
float startPosY;
bool isHeld = false;
void Start()
{
}
void Update()
{
if (isHeld == true)
{
Vector3 mousePos;
mousePos = Input.mousePosition;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
this.transform.position = new Vector3(mousePos.x - startPosX, this.transform.position.y, 0);
}
}
public void OnMouseDown()
{
if (Input.GetMouseButtonDown(0))
{
Vector3 mousePos;
mousePos = Input.mousePosition;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
//Debug.Log(mousePos.ToString());
startPosX = mousePos.x - this.transform.position.x;
startPosY = mousePos.y - this.transform.position.y;
isHeld = true;
}
}
private void OnMouseUp()
{
isHeld = false;
}
}