簡體   English   中英

塊滑動游戲的基於網格的運動

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM