/// <summary> 巡回ステート時の処理 </summary> private IEnumerator RandomWalk() { while (!FindPlayer()) { // 距離マップ int[,] distanceMap = new int[mapRange.x, mapRange.y]; // 目的地ランダマイズ Vector2Int destination = RandomDestination(); //Debug.Log("random destination"+destination); // 移動マップ記録 _influenceMap.DetureMatrixOperate(destination, j => _passableMap[j.x, j.y], (xCount, yCount, distance) => { distanceMap[xCount, yCount] = distance; }); // 移動 int step = distanceMap[EnemyPosition.x, EnemyPosition.y]; Vector2Int stepPos = EnemyPosition; while (EnemyPosition != destination && !FindPlayer()) { _influenceMap.NextPoint(EnemyPosition, (x, y) => { if (step > distanceMap[x, y] && _passableMap[x, y]) { step = distanceMap[x, y]; stepPos = new Vector2Int(x, y); } }); yield return(Move(stepPos - EnemyPosition, walkTime)); } } }