广州网站建设山东网站建设

苏州多普贸易有限公司 2026/09/09 18:04:57
// endnode是终点(目标格子)while(currentNode){// 只要还有父节点,就继续回溯path.unshift({x:currentNode.x,y:currentNode.y});// 从头部插入currentNode=currentNode.parent;// 指向父节点(上一个格子)}

这个过程:
终点 → 父节点 → 父节点的父节点 → … → 起点

例如路径:起点(0,0) → (1,0) → (2,0) → 终点(3,0)
A*算法链接:终点.parent = (2,0), (2,0).parent = (1,0), (1,0).parent = (0,0)

用 unshift() 插入后得到的 path:

JAVASCRIPT[{x:0,y:0},// 起点(因为unshift,最早插入的最后在数组开头){x:1,y:0},{x:2,y:0},{x:3,y:0}// 终点(第一个插入的)]
  1. 路径存储与初始化
TYPESCRIPT this.path=path;// 存储整个路径数组this.currentPathIndex=1;// 从索引1开始移动

为什么要从1而不是0开始?

索引0:角色的当前起点位置
索引1:要移动到的第一个格子
索引2:第二个格子

最后一个索引:终点

例如:path=[(0,0),(1,0),(2,0),(3,0)]JAVASCRIPT// currentPathIndex = 1 意味着:path[0]=(0,0)← 角色就在这里(跳过) path[1]=(1,0)← 这是第一个要移动到的点 ⭐
  1. 发送路径到网格显示
TYPESCRIPT this.sendPathToGrid(path);// 让gezi组件把路径画出来(显示为9)
  1. 延迟启动移动
TYPESCRIPT this.scheduleOnce(()=>{this.startMoving();// 延迟一帧后调用startMoving},0);

为什么要延迟?

确保路径数据已经完全处理
给gezi组件时间绘制路径
Cocos更新机制需要
后续流程(不在这个代码段中)
5. startMoving() 方法

TYPESCRIPTstartMoving(){if(this.path.length<=1){// 检查路径是否有效console.log("没有找到路径或路径太短");return;}console.log(`开始移动,路径共有 ${this.path.length} 个点`);this.moveToNextPoint();// 调用移动方法}
  1. moveToNextPoint() 方法
    TYPESCRIPT
moveToNextPoint(){if(this.currentPathIndex>=this.path.length){console.log("到达目的地!");return;}consttarget=this.path[this.currentPathIndex];// 获取当前目标点console.log(`移动到第 ${this.currentPathIndex} 个点:[${target.x}, ${target.y}]`);// 转换为世界坐标并移动constworldPos=this.gridComponent.gridToWorldPosition(target.x,target.y);this.moveNodeTo(worldPos);}
  1. moveNodeTo() 方法(执行移动动画)
TYPESCRIPTmoveNodeTo(targetPosition:Vec3){tween(this.node)// 播放Tween动画.to(duration,{worldPosition:targetPosition}).call(()=>{// 动画完成后,继续下一个点this.currentPathIndex++;// ⭐ 关键:增加索引if(this.currentPathIndex<this.path.length){this.moveToNextPoint();// 递归调用}}).start();}

完整移动流程图示
TEXT
fujiedian() → 构建路径回溯

存储路径 this.path = […]

currentPathIndex = 1 // 跳过起点

this.startMoving()

this.moveToNextPoint()

获取目标点 this.path[1] → 坐标转换

this.moveNodeTo(坐标) // 移动动画
↓ ↑
完成回调 |
↓ |
this.currentPathIndex++ (→2)

if (索引 < 路径长度)

再次调用 moveToNextPoint() // 处理第2个点

获取目标点 this.path[2] → 坐标转换

继续移动…

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

网络网站建设网站建设要求

引言在数字化学习与考核浪潮席卷的当下,一款开源的答题小程序悄然崛起,成为企业招聘、知识竞赛、培训认证等领域的“秘密武器”。它集答题、考试、刷题、活动答题等功能于一身

2026/06/30 09:56:47

网站建设维护张家界网站建设

工具MT管理器(看版本号选最新版本)NP管理器(看版本号选最新版本)资源大师(自行必应)教程一、准备1.在mt/np管理器提取安装包/找到安装包位置2.去除软件签名效验&#

2026/06/30 14:11:09

唐山网站建设怀化网站建设

实用脚本:索引程序与统计脚本解析在编程世界中,有许多实用的脚本程序能帮助我们解决各种问题。本文将详细介绍主索引程序中的一些有趣细节,以及一系列由 Usenet 用户贡献的实用脚本。主索引程序的细节主索

2026/06/30 13:32:36

网站建设策划书无锡网站建设

第一章:R语言在生态环境预测中的核心价值R语言凭借其强大的统计分析能力与丰富的生态建模工具,在生态环境预测领域展现出不可替代的核心价值。它不仅支持复杂的数据处理与可视化&#

2026/06/30 11:24:55

重庆网站建设网站建设书

大模型推理安全加固:TensorRT运行时隔离实践在大模型服务加速落地的今天,一个看似矛盾的需求正变得越来越迫切——既要极致性能,又要绝对安全。当千亿参数的语

2026/06/30 10:03:18

梧州网站建设网络建设网站

apidoc插件系统架构设计深度解析【免费下载链接】apidocRESTful web API Documentation Generator.项目地址: https://gitcode.com/gh

2026/06/30 12:14:00

网站建设步骤网站建设产品

公交移动电视:车载屏幕配合VoxCPM-1.5-TTS-WEB-UI播报站点周边信息在早晚高峰的公交车上,你是否曾因听不清下一站名而错过下车?又或者听到机械生

2026/06/30 12:29:31

河南网站建设公司网站建设排名

第一章:VSCode远程调试性能优化的必要性在现代软件开发中,远程开发与调试已成为常态,尤其是在处理分布式系统、云原生应用或跨平台项目时。VSCode凭借其轻

2026/06/30 11:23:55

莱州网站建设网站建设课程

戴森球计划终极蓝图指南:从入门到精通的完整工厂体系搭建方案【免费下载链接】FactoryBluePrints游戏戴森球计划的**工厂**蓝图仓库项目地址: https://gitcode

2026/06/30 10:36:51

广州网站建设建设网站公司

VRExpansionPlugin:构建沉浸式虚拟现实的终极解决方案【免费下载链接】VRExpansionPluginA UE4 VR framework项目地址: https://gi

2026/06/30 13:51:37