如何在国际象棋游戏中修复此错误,使棋子出现在棋子之上?

时间:2019-04-03 16:08:31

标签: c# unity3d

我当时正在做一个国际象棋游戏,其他一切都很好,除了一个棋子(在前面的棋子上显示了一个移动标记)(棋子不能那样移动)。游戏不会让您移动到那里,因为移动标记代码与实际的移动代码和校验是分开的。

我已经尝试了许多不同的方法,例如遍历每个片段并检查每个片段是否在所选片段的前面,并确保迭代通过的每个片段都不是所选片段。

if (pieceSelected && !finishedPlacingMoveMarkers)
{
    if (selectedPiece.GetComponent<BlackPawn>())
    {
        if (selectedPiece.transform.position.y + 1 <= 3.5)
        {
            foreach (Transform child in pieces.transform)
            {
                if (child.tag == "Piece")
                {
                    if (obj.position == new Vector3(selectedPiece.transform.position.x, selectedPiece.transform.position.y + 1) && child.position != selectedPiece.transform.position)
                    {
                        if (child.position == new Vector3(selectedPiece.transform.position.x, selectedPiece.transform.position.y + 1))
                        {
                            noMoveHighlight = true;
                            break;
                        }
                        else
                        {
                            noMoveHighlight = false;
                        }  
                    }    
                }
            }

            if (!noMoveHighlight)
            {
                GameObject move1 = Instantiate(tileMoveHighlight);
                move1.transform.parent = moveTileHighlights.transform;
                move1.transform.position = new Vector3(selectedPiece.transform.position.x, selectedPiece.transform.position.y + 1, -0.9f);
            }      
        }

        finishedPlacingMoveMarkers = true;
    }
}

当我选择典当时,我希望结果看起来像这样: https://i.imgur.com/iSA3mFi.png

但是它们看起来像这样: https://i.imgur.com/s25kb5E.png

请帮助!

0 个答案:

没有答案