/// <summary> /// 基礎回遊ルート取得 /// </summary> public Vector3[] GetBaseMigrationRoute(FishRouteData routeData) { int pointSize = routeData.pathCreator.path.NumPoints; var baseRoute = new Vector3[pointSize * (routeData.loopCount + 1)]; //基本回遊ルートの作成 for (int i = 0; i < pointSize; i++) { int j = routeData.isReverse ? pointSize - 1 - i : i; //この時点では-0.5~+0.5の範囲の値 baseRoute[i] = routeData.GetPoint(j); //0f~1fの間に補正 baseRoute[i] += Vector3.one * 0.5f; //エリア内補正 baseRoute[i] = this.ToFishAreaPosition(baseRoute[i]); //見え方回転補正 baseRoute[i] = this.viewRotation * baseRoute[i]; } //ループ回数分、回遊ルートを追加 for (int i = 0; i < routeData.loopCount; i++) { int offset = pointSize * (i + 1); for (int j = 0; j < pointSize; j++) { baseRoute[offset + j] = (i % 2 == 0) ? baseRoute[pointSize - 1 - j] : baseRoute[j]; } } return baseRoute; }
/// <summary> /// 回遊ルート取得 /// </summary> public Vector3[][] GetMigrationRoute(FishRouteData routeData) { var baseRoute = this.GetBaseMigrationRoute(routeData); var routes = this.GetMigrationRoute(baseRoute, (int)routeData.unitSize, routeData.unitSpread); return routes; }