Пример #1
0
        void CreateLineInfos()
        {
            currentLineInfos = new List <LineOfSightInfo> [mapDiagonal * 2, mapDiagonal * 2];
            List <LineOfSightInfo> centerInfos = new List <LineOfSightInfo>();

            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 1, 0));
            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 1, -1));
            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 0, -1));
            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, -1, -1));
            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, -1, 0));
            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, -1, 1));
            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 0, 1));
            centerInfos.Add(new LineOfSightInfo(mapDiagonal, mapDiagonal, 1, 1));

            currentLineInfos[0, 0] = centerInfos;

            for (int i = 0; i < centerInfos.Count; i++)
            {
                LineOfSightInfo lineInfo = centerInfos[i];
                lineInfo.GeneratePoints(mapDiagonal);

                for (int j = 1; j < lineInfo.Points.Length; j++)
                {
                    PointInfo point = lineInfo.GetNextPoint();
                    List <LineOfSightInfo> infos = new List <LineOfSightInfo>();

                    Vector2 direction = new Vector2(lineInfo.DirectionX, lineInfo.DirectionY).Rotate(-45).Round();
                    infos.Add(new LineOfSightInfo(point.coordinateX, point.coordinateY, (int)direction.x, (int)direction.y));

                    direction = new Vector2(lineInfo.DirectionX, lineInfo.DirectionY).Rotate(45).Round();
                    infos.Add(new LineOfSightInfo(point.coordinateX, point.coordinateY, (int)direction.x, (int)direction.y));
                    infos.ForEach(info => info.GeneratePoints(mapDiagonal));

                    currentLineInfos[point.coordinateX, point.coordinateY] = infos;
                }
            }
        }
Пример #2
0
 private void HandleTargetInSightChanged(LineOfSightInfo los)
 {
     StopAllCoroutines();
     StartCoroutine(FadeColorRoutine(isLookingAtEnemy: los.isEnemyInSight));
 }