Пример #1
0
    void GetNewTarget()
    {
        Vector3 dir;

        switch (moveDirection)
        {
        case Direction.Up: dir = Vector3.forward; break;

        case Direction.Down: dir = Vector3.back; break;

        case Direction.Left: dir = Vector3.left; break;

        case Direction.Right: dir = Vector3.right; break;

        default: return;
        }
        dir += Vector3.down * .5f;

        RaycastHit hit;

        if (Physics.Raycast(transform.position, dir, out hit, 2))
        {
            /*if(hit.transform.CompareTag("Enemy"))
             * {
             *  Die();
             *  return;
             * }*/
            GridElement element = hit.transform.GetComponent <GridElement>();
            if (element)
            {
                if (element.MyType == GridElementType.Empty || element.MyType == GridElementType.ColorFilled)
                {
                    targetPosition = element.transform.position + (Vector3.up);
                }
                else if (element.MyType == GridElementType.TrailFill)
                {
                    Die();
                }

                if (element.MyType == GridElementType.Wall || element.MyType == GridElementType.ColorFilled)
                {
                    if (element.MyType == GridElementType.Wall)
                    {
                        moveDirection = Direction.Nan;
                    }
                    if (Physics.Raycast(transform.position, Vector3.down, out hit, 2))
                    {
                        element = hit.transform.GetComponent <GridElement>();
                        if (element)
                        {
                            //element.transform.position += Vector3.up*3;
                            if (element.MyType == GridElementType.TrailFill || element.MyType == GridElementType.ColorFilled)
                            {
                                element.FindSmallestEnclosedAreaAndFillIt();
                                GameManager.instance.ActiveGrid.CheckFilledCellCount();
                            }
                        }
                    }
                }
            }
        }
        else
        {
            Debug.LogError("Error Code 0");
            transform.position = startingPosition;
        }
    }