예제 #1
0
    // Update is called once per frame
    void Update()
    {
        if ((targetPosition - transform.position).magnitude > .01f)
        {
            transform.position = Vector3.MoveTowards(transform.position, targetPosition, Time.deltaTime * MoveSpeed);
        }
        else
        {
            transform.position = targetPosition;
            RaycastHit hit;
            if (Physics.Raycast(transform.position, Vector3.down, out hit, 2))
            {
                GridElement element = hit.transform.GetComponent <GridElement>();
                if (element)
                {
                    if (element.MyType == GridElementType.Empty)
                    {
                        element.SetAsTrail();
                    }
                }
            }
            GetNewTarget();
        }

        if (InputManager.instance.ActiveInput != Direction.Nan)
        {
            RaycastHit  hit;
            GridElement element;
            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.ColorFilled)
                    {
                        if (moveDirection == Direction.Up && InputManager.instance.ActiveInput == Direction.Down)
                        {
                            InputManager.instance.ActiveInput = Direction.Nan; return;
                        }
                        if (moveDirection == Direction.Down && InputManager.instance.ActiveInput == Direction.Up)
                        {
                            InputManager.instance.ActiveInput = Direction.Nan; return;
                        }
                        if (moveDirection == Direction.Left && InputManager.instance.ActiveInput == Direction.Right)
                        {
                            InputManager.instance.ActiveInput = Direction.Nan; return;
                        }
                        if (moveDirection == Direction.Right && InputManager.instance.ActiveInput == Direction.Left)
                        {
                            InputManager.instance.ActiveInput = Direction.Nan; return;
                        }
                    }
                }
            }

            moveDirection = InputManager.instance.ActiveInput;
            InputManager.instance.ActiveInput = Direction.Nan;
        }
    }