当前位置: 首页 > wzjs >正文

什么网站做蜘蛛池app开发定制外包26

什么网站做蜘蛛池,app开发定制外包26,寻找项目做的网站,东莞做网站推广的公司需求 项目是MMO大场景,按地块划分了10x10的大格子。角色移动时动态更新周边场景,且角色还有传送功能。 项目中寻路用了AstarPathfindingProject的Grid。因此需要动态烘焙寻路信息。 核心代码 private void bakeAStarPath(){AstarPath astarPath Astar…

需求

项目是MMO大场景,按地块划分了10x10的大格子。角色移动时动态更新周边场景,且角色还有传送功能。
项目中寻路用了AstarPathfindingProject的Grid。因此需要动态烘焙寻路信息。

核心代码

    private void bakeAStarPath(){AstarPath astarPath = AstarPath.active;if (astarPath == null){Debug.LogError("AstarPath 实例未找到,请确保场景中有 AstarPath 组件!");return;}// 获取第一个 GridGraph(假设你只有一个 GridGraph)GridGraph gridGraph = astarPath.data.gridGraph;if (gridGraph == null){Debug.LogError("GridGraph 未找到,请确保已添加 GridGraph!");return;}float newGraphCenterX = curCenterXIndex * xSize + xSize * 0.5f;float newGraphCenterZ = curCenterZIndex * zSize + zSize * 0.5f;gridGraph.center = new Vector3(newGraphCenterX, 0, newGraphCenterZ);gridGraph.width = (int)xSize * 3;gridGraph.depth = (int)zSize * 3;//// 重新计算并扫描 GridGraphastarPath.Scan();

可能遇到的问题

  • 1,烘焙后场景内可通行区域是不可通行的

一般是时机问题,烘焙的时候可能场景还没有准备好。笔者的做法是场景加载好后延迟一个物理帧再烘焙。因为烘焙的底层是通过射线来检测的,确保场景中的物理数据准备就绪再烘焙可以规避这个问题。

yield return new WaitForFixedUpdate();
//TODO:bake callback
  • 2,加了物理帧延迟后依旧很小概率会出现烘焙不上的问题

取一个必可通行的点(比如主角的脚下),检测该点所在的node是否可通行,若不可通行,再重复多次bake,直至可通行。

    int retryCount = 0;private void bakeAStarPath(){AstarPath astarPath = AstarPath.active;if (astarPath == null){Debug.LogError("AstarPath 实例未找到,请确保场景中有 AstarPath 组件!");return;}// 获取第一个 GridGraph(假设你只有一个 GridGraph)GridGraph gridGraph = astarPath.data.gridGraph;if (gridGraph == null){Debug.LogError("GridGraph 未找到,请确保已添加 GridGraph!");return;}float newGraphCenterX = curCenterXIndex * xSize + xSize * 0.5f;float newGraphCenterZ = curCenterZIndex * zSize + zSize * 0.5f;gridGraph.center = new Vector3(newGraphCenterX, 0, newGraphCenterZ);gridGraph.width = (int)xSize * 3;gridGraph.depth = (int)zSize * 3;//// 重新计算并扫描 GridGraphastarPath.Scan();var checkNode = gridGraph.GetNearest(new Vector3(selfRolePos.x, 0, selfRolePos.z));bool bakerFlag = false;if (checkNode.node.Walkable){ bakerFlag = true;}else{ bakerFlag = false;}if (bakerFlag == false){Debug.LogError("GridGraph扫描失败,准备重新扫描");if (retryCount < 3){//再次扫描TimerTween.Delay(0.5f, () =>{retryCount++;this.bakeAStarPath();}).SetTag("delayBakerA*" + retryCount).Start();}}else{Debug.LogError("GridGraph Center 已更新为: " + gridGraph.center + " 并完成重新扫描, xIndex:" + this.curCenterXIndex + ", zIndex:" + this.curCenterZIndex);retryCount = 0;} }
  • 3,异步烘焙

插件也提供异步扫描的方式,上述代码中astarPath.Scan();为同步扫描。若场景不太大的话同步扫描耗时较低是可以接受的。若耗时过高,造成严重卡顿,可以考虑使用异步烘焙

    private void bakeAStarPath(){//...略StartCoroutine(ScanGraphAsync(astarPath));}IEnumerator ScanGraphAsync(AstarPath astarPath){// 开始异步扫描var progress = astarPath.ScanAsync();foreach (var p in progress){//Debug.Log ("扫描进度: " + p.progress);  yield return null;}Debug.LogError("异步扫描完成!");}
http://www.dtcms.com/wzjs/562010.html

相关文章:

  • 做影视网站不备案网站备案完才能建站吗
  • 平面素材网站排名活动宣传推广的形式有哪些
  • 网站数据库搬家seo关键词优化怎么收费
  • 蚂蚁中国网站建设动漫网站开发研究内容
  • 网站是否需要备案视频网站开发流程
  • 手机网站建设要注意哪些问题站长工具海角
  • 深圳网站建设icxun网站源码在哪里
  • 建网站需要几程序员wordpress建企业网站
  • 手机精品网站建设网站 配色
  • 兰州网站设计公司有哪些南宁市建设工程造价信息网
  • s什么网站可以接单做设计赚钱野花高清中文免费观看视频
  • 装修公司网站源代码用wordpress搭建商城
  • 公众号做视频网站吗域名停域旧版本app免费下载
  • 免费自助建站平台系统广州网站开发外包公司
  • 成都网站建设成都网络公司ppt简洁模板整套免费
  • ps做网站宽度湖北民族建设集团网站
  • 建设服装网站目的商务电子是学什么的
  • 网站建设好发信息网祺越网站建设
  • 建设银行网站为什么进不去开发一个卖东西的网站多少
  • 微信公众号可以做几个微网站吗英文网站建设easy
  • 优秀国外网站工程建设信息网站接口
  • 网站开发工具的选择网站开发工作流审批流
  • 常州网站设计制作淘宝网店网站建设目的
  • 北京网站设计定制开发建设公司wordpress的静态页面保存在哪里
  • 简述电子商务网站的内容设计与开发域名是什么意思呢
  • 主题资源网站建设 反思中山外贸网站建设
  • 计算机考试模拟网站怎么做网站反链数
  • 怀来网站建设甘肃省建设厅网站质监局
  • it类网站wordpress下载按钮插件
  • 电子商务网站盈利模式怎么用链接进自己做的网站吗