Ejemplo n.º 1
0
    private List <float> DetermineIfTurn(CreateMaze.Coordinate coordinateTo)
    {
        Vector2 coordinateFrom = CreateMaze.Instance.GetWorldPoint(transform.position - transform.forward);
        Vector2 coordinateAt   = CreateMaze.Instance.GetWorldPoint(transform.position);

        Direction facing;
        Direction needToFace;

        facing     = DetermineFacing(coordinateFrom, coordinateAt);
        needToFace = DetermineFacing(coordinateAt, new Vector2(coordinateTo.x, coordinateTo.y));

        return(FindTurningDifference(facing, needToFace));
    }
Ejemplo n.º 2
0
    private IEnumerator MoveOne(CreateMaze.Coordinate coordinate)
    {
        foreach (var turn in DetermineIfTurn(coordinate))
        {
            if (turn < 0)
            {
                SnapToGrid();
                var fromAngle = transform.rotation;
                var toAngle   = Quaternion.Euler(transform.eulerAngles + Vector3.down * 90);
                StartWalkingAnimation();
                for (var t = 0f; t < 1; t += Time.deltaTime / TurnTime)
                {
                    transform.rotation = Quaternion.Lerp(fromAngle, toAngle, t);
                    yield return(null);
                }
                SnapToGrid();
                m_blockInput = false;
            }
            else if (turn > 0)
            {
                SnapToGrid();
                var fromAngle = transform.rotation;
                var toAngle   = Quaternion.Euler(transform.eulerAngles + Vector3.up * 90);
                StartWalkingAnimation();
                for (var t = 0f; t < 1; t += Time.deltaTime / TurnTime)
                {
                    transform.rotation = Quaternion.Lerp(fromAngle, toAngle, t);
                    yield return(null);
                }
                SnapToGrid();
                m_blockInput = false;
            }
        }
        var moveTo = transform.position + transform.forward * 2;

        StartWalkingAnimation();
        SnapToGrid();
        var offset = (moveTo - transform.position);

        for (var t = 0f; t < 1; t += Time.deltaTime / TurnTime)
        {
            transform.position += offset * (Time.deltaTime / TurnTime);
            yield return(null);
        }
        m_blockInput = false;
        SnapToGrid();
        DataHandler.instance.data.enemy.toCoordinate(moveTo);
        DataHandler.instance.saveData();
    }