Unity Color Matching Game - PullRequest
       5

Unity Color Matching Game

0 голосов
/ 17 марта 2020

Я искал похожие игры на форуме и в Google, но не смог найти точно.

Я создаю игру-головоломку. и пользователь может получить точку, если узлы (горизонтальные палочки) одного цвета, тогда он может получить.

, когда они находятся в одном и том же направлении, он говорит, что цвета совпадают, но в сгенерированном узле всякий раз, когда я поворачиваю палочки, он говорит также.

Можете посмотреть? и скажи мне, как исправить. Также, если у вас есть лучшее представление об этом совпадении, я буду признателен.

same direction --------- enter image description here

void Update()
{


    if (Input.GetMouseButtonDown(0))
    {

        clickTime = Time.time;
        rayhit = Physics2D.Raycast(Camera.main.ScreenToWorldPoint(Input.mousePosition), Vector2.zero, Mathf.Infinity, selectableObjLayerMask);
    }
    else if (Input.GetMouseButtonUp(0))
    {
        if (rayhit)
        {
            if (Time.time - clickTime < .2f)
            {
                Node node = rayhit.transform.GetComponent<Node>();
                if (node != null)
                {
                    for (int i = 0; i < node.sticks.Count; i++)
                    {
                        Vector3 newAngles = new Vector3(0, 0, (node.sticks[i].transform.localEulerAngles.z - 45));
                        newAngles.z = newAngles.z < 0 ? newAngles.z + 180 : newAngles.z;
                        newAngles.z = newAngles.z >180 ? newAngles.z - 180 : newAngles.z;
                        node.sticks[i].transform.localEulerAngles = newAngles;

                        node.sticks[i].degree = (int)newAngles.z;

// ******** СООТВЕТСТВИЕ ЦВЕТУ *******

                        if (node.transform.parent.name=="Node1" && node.sticks[i].degree == 90)
                        {
                            colorMatch[1] = node.sticks[i].color;
                            Debug.Log("COLOR 1___"+ colorMatch[1]);
                            //Debug.Log(colorMatch1);

                        }
                        if (node.transform.parent.name == "Node2" && node.sticks[i].degree == 90)
                        {
                            colorMatch[2] = node.sticks[i].color;
                            Debug.Log("COLOR 2___" + colorMatch[2]);

                        }
                        if (node.transform.parent.name == "Node3" && node.sticks[i].degree == 90)
                        {
                            colorMatch[3] = node.sticks[i].color;
                            Debug.Log("COLOR 3___" + colorMatch[3]);
                            //if (colorMatch[1] == colorMatch[2] && colorMatch[2] == colorMatch[3])
                            //{
                            //    Debug.Log("COLORS MATCHED : " + colorMatch[1]);
                            //}
                        }

                        if (colorMatch[1]==colorMatch[2] && colorMatch[2]==colorMatch[3])
                        {
                            Debug.Log("COLOR MATCHED");
                        }
                    }

                }
            }
            else 
            {
                Node currNode = rayhit.transform.GetComponent<Node>();
                if(currNode.isMoved == false)
                {
                    smallestId = 0;
                    smallestDistance = 999;
                    for (int i = 0; i < nodes.Length; i++)
                    {

                        float distance = Vector2.Distance(rayhit.transform.position, nodes[i].transform.position);
                        if (smallestDistance > distance)
                        {
                            smallestDistance = distance;
                            smallestId = i;
                        }

                    }

                    rayhit.transform.position = nodes[smallestId].transform.position;
                    if (rayhit.transform.parent != nodes[smallestId].transform)
                    { 
                        if (nodes[smallestId].transform.childCount > 0 && nodes[smallestId].transform != rayhit.transform.parent)
                        {
                            if (currNode != null)
                            {
                                for (int i = 0; i < currNode.sticks.Count; i++)
                                {
                                    nodes[smallestId].transform.GetChild(0).GetComponent<Node>().sticks.Add(currNode.sticks[i]);
                                    currNode.sticks[i].transform.SetParent(nodes[smallestId].transform.GetChild(0));
                                }
                                Destroy(rayhit.transform.gameObject);
                            }
                        }
                        else
                        {
                            if (currNode != null)
                            {
                                currNode.isMoved = true;
                            }
                            rayhit.transform.SetParent(nodes[smallestId].transform);
                        }
                    }

                }

            }               

        }
        rayhit = new RaycastHit2D();

    }
    else if (Input.GetMouseButton(0))
    {
        if(rayhit.transform != null)
        {
            Node currNode = rayhit.transform.GetComponent<Node>();
            if(currNode != null)
                if (currNode.isMoved == false)
                {
                    if (Time.time - clickTime >= 0.2f)
                    {
                        Vector2 newPos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
                        rayhit.transform.position = newPos;
                    }
                }
        }


    }
}

1 Ответ

0 голосов
/ 17 марта 2020
if (node.transform.parent.name=="Node1" && node.sticks[i].degree == 90)
                        {
                            colorMatch[1] = node.sticks[i].color;
                            Debug.Log("COLOR 1___"+ colorMatch[1]);
                            //Debug.Log(colorMatch1);

                        }
                        if (node.transform.parent.name == "Node2" && node.sticks[i].degree == 90)
                        {
                            colorMatch[2] = node.sticks[i].color;
                            Debug.Log("COLOR 2___" + colorMatch[2]);

                        }
                        if (node.transform.parent.name == "Node3" && node.sticks[i].degree == 90)
                        {
                            colorMatch[3] = node.sticks[i].color;
                            Debug.Log("COLOR 3___" + colorMatch[3]);
                            if (colorMatch[1] == colorMatch[2] && colorMatch[2] == colorMatch[3])
                            {
                                Debug.Log("COLORS MATCHED : " + colorMatch[1]);

                            }

                        }

Вот рабочий код. но как я могу уничтожить совпавшие палочки?

...