游戏中用户点击不可达地点引起寻路循环,游戏停顿问题解决
通常我们在游戏中通过寻路算法来找到用户点击的地点,再根据目标地点来进行寻路。当用户点击一个不可到达的地点时候,游戏会出现突然停顿现象。如上图中的X点和涂红的点都是不可达到的,游戏主角在A点(0,0)(我们暂时称为NodeA),他需要达到的地点是红色点NodeD(4,4).在这种情况下,地图越
大或逻辑格子越多,停顿也明显时间就越长,这是因为逻辑格子越多,寻路算法需要寻路的时间越长,甚至要遍历整个地图最终才发现地图是无路可走。
所以我需要在寻路之前进行一些优化。当用户点击NodeD时候,判断一下NodeD是否可到达。伪代码
如下:
if(NodeD可达)
{
移动角色
}
else
{
计算角色当前点到目标点得方向Direction.我们这里以竖直方向为90度。如果Direction<=135度
则沿着Noded四周顺时针旋转开始查询第一个可达点,否则逆时针旋转查找。
第一个开始点是在NodeA和NodeD直线之间偏离最小的点开始找,此处为Node(3,3).因为Node(3,3)不
可达,继续(3,4),(3,5),(4,5),(5,5)(5,3),(4,3)
}
因为旋转一周发现也是没有可达点,我们将Node(3,3)为目标点,继续按照以上的循法顺时查找(注意排除已经查找过的点)。最终发现(3,2),(2,3)点是离原始目标点NodeD(4,4)是最近的。此时我只需要达到这两点即可,至于要达到(3,2),(2,3)中哪一点,您可以根据自己的最短路算法来选择一个。到此,我的可达目标点已经,就开始A*寻路吧。这样解决就不会整个地图遍历查询停顿现象了。
- 大小: 17.5 KB
- 大小: 20.4 KB
分享到:
相关推荐
面的问题甚至存在于一些顶级产品中。 并不是说这是当今游戏的通病。 因为时下许多游戏确实拥有高质量的寻路,而且视频里 的寻路大部分时间也表现良好。 但是仍有太多的游戏还在使用九十年代的方法。 (说明:...
探讨了游戏开发中的一些寻路算法,提出了如何在游戏中使用遗传算法实现路径探索的基本思路, 分析了遗传算法实现寻路的优点及其存在的问题。
在同一场景中使用A*寻路,策划现在的需求是这样呢的,在任务中NPC,杀怪等需要自动寻路能走到其他场景中的NPC或者怪物或者是其他任何东西。 blog:具体内容 ...
A星寻路 界面源码来源于云游大神作品,当时...Astart.dll 源码来自易语言官方论坛某个大神作品 A星寻路 绘图工具 读人物当前坐标画二值化图支持绘图保持中心点跟随,可快照保存遮挡图片 全部开源,毫无保留,易语言编写
A算法,适合塔防游戏、自动寻路游戏 学习A算法
高效游戏地图寻路,一个老游戏的,可以提供一些思路
在当今游戏工业界,A*算法是被大家最广泛使用的人工智能寻路算法,也是最有效的最短路径搜索算法。A*算法实际上是一种基于广度优先搜索基础上的启发式搜索算法,通常采用估价函数:f(n)=g(n)+h(n)对当前的搜索位置...
启发式A_算法在游戏寻路中的应用
关于flash游戏制作的算法,是初学者最基础的学习知识
C++版寻路算法,做游戏基础算法
flash游戏中用的最多的也是效率最好寻路算法:A星算法。
flex rpg 网页游戏 as 寻路算法
在游戏中,玩家需要操作角色前进、转向等动作,避免被障碍物(迷宫墙)阻挡,玩家需要思考解决方案,如何才能在最短的时间内到达出口。 《寻路迷宫》是一款非常有趣和挑战性的小游戏app,无论是休闲娱乐还是挑战自我...
A*寻路初探,游戏里常用的寻路算方法!算法的研究,和学习都可以看看!
使用A*算法求解迷宫寻路问题,使用python编程,人工智能导论课后实验
中文大漠,A星寻路,等功能
一个使用A星算法进行寻路的RPG游戏源码,可以用来学习Actionscript游戏开发.很不错
2D游戏寻路算法 对网游开发朋友很有帮助
vb做游戏的自动寻路程序演示完美版vb做游戏的自动寻路程序演示完美版