コード例 #1
0
 // Füllt die Liste mit allen Feldern, die der Roboter sehen kann
 private void GetRealFieldOfView(Robot robot, List<Transform> InRealView)
 {
     for (int i = 0; i < Map.childCount; i++)
     {
         // Gehe alle Zellen der Karte durch und überprüfe, ob sie im Sichtbereich des Roboters liegen (ohne Schatten/Sichtblockaden)
         if (robot.InViewField(Map.GetChild(i)))
         {
             // Gehe alle Zellen im Sichtradius durch und überprüfe, ob sie Verdeckt sind/im Schatten einer Wand liegen
             if (robot.IsInSight(Map.GetChild(i)))
             {
                 InRealView.Add(Map.GetChild(i));
             }
         }
     }
 }
コード例 #2
0
    // Gibt die Zellen zurück, die am Rand des Sichtfelds liegen
    private void getFrontierCells(Robot robot, List<Transform> inRealView, List<Transform> fronterCells)
    {
        List<Transform> neig = new List<Transform>();

        foreach (Transform t in inRealView)
        {
            getAllNeighbours(t, neig);
            foreach (Transform tt in neig)
            {
                if (!robot.InViewField(tt) || !robot.IsInSight(tt) && (robot.InViewField(tt) && !tt.GetComponent<Cell>().isWall))
                {
                    if (!t.GetComponent<Cell>().isClosed)
                    {
                        fronterCells.Add(t);
                    }
                    break;
                }
            }

            neig.Clear();
        }
    }