[英]Grid Based Movement for a Block Sliding Game
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;
}
我的期望是塊的 pivot 檢測到網格的每個圖塊,並在鼠標上捕捉到它
您可以將觸發對撞機添加到塊中。 然后為網格中的每個 position 添加一個空的 GameObject,我們稱之為 SnapLocation。 然后 OnMouseButtonUp 您可以將塊 position 移動到 SnapLocation 的 position。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.