簡體   English   中英

如何在 Unity 中移動對象

[英]How to move an object in Unity

大家好,我嘗試制作一個城市建築游戲,這個想法非常簡單,實際上實例化一個建築並在點擊放置按鈕和放置后用鼠標移動它們。 問題是如果另一座建築物的對撞機完全包圍了我建造的建築物的對撞機,我就無法移動新建築物。 我可能可以用圖片更好地解釋。 問題 1第一張照片是我的新建築,你可以看到對撞機的限制,第二張是我已經放置的舊建築。 我理解這個問題,但我無法解決它。 這是我的對象拖動代碼

private void OnMouseDrag()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hitInfo;
        if (Physics.Raycast(ray, out hitInfo, 1000f,(1 << LayerMask.NameToLayer("Ground"))))
        {
            Debug.Log(hitInfo.transform.name);
            transform.position = SnapToGrid(hitInfo.point);
        }
    }

    private Vector3Int SnapToGrid(Vector3 pos)
    {
        Vector3 tempPos = pos;
        Vector3Int snappedPos;
        snappedPos = new Vector3Int(Mathf.RoundToInt(tempPos.x), Mathf.RoundToInt(tempPos.y), Mathf.RoundToInt(tempPos.z));
        return snappedPos;
    }

我在這里先向您的幫助表示感謝

如果我的問題是正確的,我相信您可以通過在移動新建築物時啟用先前放置的建築物對撞機的“Is Trigger”選項來解決問題。 在對象中啟用此選項可以使其他對象在發生碰撞時可以通過它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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