<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 3.3 實現AOI管理模塊 那么接下來我們就要對格子添加到一個AOI模塊中進行管理。我們創建一個aoi模塊文件。 > mmo\_game/core/aoi.go ```go package core /* AOI管理模塊 */ type AOIManager struct { MinX int //區域左邊界坐標 MaxX int //區域右邊界坐標 CntsX int //x方向格子的數量 MinY int //區域上邊界坐標 MaxY int //區域下邊界坐標 CntsY int //y方向的格子數量 grids map[int]*Grid //當前區域中都有哪些格子,key=格子ID, value=格子對象 } /* 初始化一個AOI區域 */ func NewAOIManager(minX, maxX, cntsX, minY, maxY, cntsY int) *AOIManager { aoiMgr := &AOIManager{ MinX: minX, MaxX: maxX, CntsX: cntsX, MinY: minY, MaxY: maxY, CntsY: cntsY, grids: make(map[int]*Grid), } //給AOI初始化區域中所有的格子 for y := 0; y < cntsY; y++ { for x := 0; x < cntsX; x++ { //計算格子ID //格子編號:id = idy *nx + idx (利用格子坐標得到格子編號) gid := y*cntsX + x //初始化一個格子放在AOI中的map里,key是當前格子的ID aoiMgr.grids[gid] = NewGrid(gid, aoiMgr.MinX+ x*aoiMgr.gridWidth(), aoiMgr.MinX+(x+1)*aoiMgr.gridWidth(), aoiMgr.MinY+ y*aoiMgr.gridLength(), aoiMgr.MinY+(y+1)*aoiMgr.gridLength()) } } return aoiMgr } //得到每個格子在x軸方向的寬度 func (m *AOIManager) gridWidth() int { return (m.MaxX - m.MinX) / m.CntsX } //得到每個格子在x軸方向的長度 func (m *AOIManager) gridLength() int { return (m.MaxY - m.MinY) / m.CntsY } //打印信息方法 func (m *AOIManager) String() string { s := fmt.Sprintf("AOIManagr:\nminX:%d, maxX:%d, cntsX:%d, minY:%d, maxY:%d, cntsY:%d\n Grids in AOI Manager:\n", m.MinX, m.MaxX, m.CntsX, m.MinY, m.MaxY, m.CntsY) for _,grid := range m.grids { s += fmt.Sprintln(grid) } return s } ``` 以上是創建一個AOI模塊\(可以理解為一個2D的矩形地圖\),里面有若干份`grids`。 `NewAOIManager()`會平均劃分多分小格子,并初始化格子的坐標,計算方式很簡單,初步的幾何計算。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看