https://www.gamesmen.com.au/rush-hour-traffic-jam-logic-board-game
была эта игра, в которой я пытаюсь воссоздать ее в Unity. Я пытаюсь сделать скрипт скользящих блоков, и он работает. давайте просто скажем, что я делаю это с помощью сетки, да, той сетки, где я могу положить плитки на нее. так как я могу сделать блоки привязки на сетке? особенно если блок имеет длину более 1 плитки?
они работают так, как я сейчас использую OnMouseDown, потому что я планировал построить его на Android, но теперь проблема в том, что я незнать, как заставить эти блоки привязываться к сетке с помощью OnMouseUp.
пока вот код для блоков
private void GrabABlock()
{
if (Input.GetMouseButton(0)) {
Debug.Log("blockGrab");
mousePos = Input.mousePosition;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
BlockPosX = mousePos.x - this.transform.position.x;
BlockPosY = mousePos.y - this.transform.position.y;
Grabbed = true;
if (Grabbed == true) {
mousePos = Input.mousePosition;
mousePos = Camera.main.ScreenToWorldPoint(mousePos);
switch (BlockDirection)
{
case BlockShape.Horizontal:
HorizontalMovement();
break;
case BlockShape.Vertical:
VerticalMovement();
break;
case BlockShape.Square:
OctaMovement();
break;
}
}
}
}
private void LateUpdate() // Snap to Grid
{
mousePos.x = Mathf.Floor(gameObject.transform.position.x / 1f) * 1f;
mousePos.y = Mathf.Floor(gameObject.transform.position.y / 1f) * 1f;
pivot.transform.position = mousePos;
}
Я ожидаю, что стержень блока обнаружит все плитки сетки и подключится к ней onMouseUp