`
suiyuan0808
  • 浏览: 154431 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

游戏中用户点击不可达地点引起寻路循环,游戏停顿问题解决

 
阅读更多

游戏中用户点击不可达地点引起寻路循环,游戏停顿问题解决

 

     

 
     通常我们在游戏中通过寻路算法来找到用户点击的地点,再根据目标地点来进行寻路。当用户点击一个不可到达的地点时候,游戏会出现突然停顿现象。如上图中的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
0
1
分享到:
评论

相关推荐

    iphone游戏 寻路算法

    在iOS游戏开发中,寻路算法(A*寻路算法)是一项关键的技术,它使得游戏中的角色或玩家能够从起点有效地找到目的地。寻路算法在iPhone游戏中广泛应用,为虚拟角色提供智能移动路径,使得游戏世界更加生动和真实。下面...

    寻路小游戏

    【标题】"寻路小游戏"涉及的是一个编程项目,它在Visual Studio 2015的集成开发环境中创建。此项目旨在实现一个寻路算法,通过游戏化的方式展示其功能和效果。通常,这种小游戏会包含一个迷宫或类似的地图,玩家需要...

    自动寻路贪吃蛇C++源码

    在本项目中,"自动寻路贪吃蛇C++源码"是一个基于C++编程语言实现的游戏,它结合了经典的贪吃蛇游戏玩法与自动寻路算法。这个游戏的核心亮点在于贪吃蛇能够智能地通过自动寻路算法找到食物,而不仅仅是随机移动。以下...

    高效游戏地图寻路,提供算法以及源码

    本资源提供的"高效游戏地图寻路"是针对一个老游戏的解决方案,虽然具体游戏未明,但我们可以从中学习到通用的寻路算法及其实现方式。 1. **寻路算法基础** - A*(A-Star)算法:A* 是一种启发式搜索算法,结合了...

    C++版寻路算法,做游戏基础算法

    寻路算法是一种用于解决网络中节点间最短路径问题的方法,如Dijkstra算法、A*算法等。在游戏场景中,通常使用图论来表示游戏地图,节点代表地图上的位置,边则代表两个位置之间的连接。 1. **Dijkstra算法**:这是...

    启发式A_算法在游戏寻路中的应用

    该算法在游戏寻路中的应用非常广泛,能够解决游戏地图中的静态地图、跨越障碍物等寻路问题。 A*算法的优点在于,它可以根据问题域的知识,来评价搜索过程中的每个节点,从而选择最优的搜索路径。该算法的估价函数...

    易语言A星算法 游戏自动寻路源码

    A星(A*)算法是一种在图形搜索中广泛使用的路径规划算法,特别是在游戏开发中用于实现角色或物体的自动寻路功能。它结合了最佳优先搜索(BFS)的全局最优性和Dijkstra算法的效率,通过引入启发式函数来估计从起点到...

    A星寻路 不贴墙 多线程 插件

    总之,"A星寻路 不贴墙 多线程 插件"是一个强大的工具,它提供了高效且流畅的路径搜索解决方案,尤其适合需要实时多目标寻路的游戏环境。通过理解A星算法的核心原理,掌握插件的使用方法,开发者可以轻松地将这一...

    flex rpg 网页游戏 as 寻路算法

    在开发Flex RPG(角色扮演游戏)网页游戏时,寻路算法是一项关键的技术,它决定了游戏中的非玩家角色(NPCs)和玩家如何智能地在游戏世界中移动。在AS(ActionScript)环境中,寻路算法是构建游戏逻辑的重要部分。...

    原创 游戏跨场景寻路代码

    在同一场景中使用A*寻路,策划现在的需求是这样呢的,在任务中NPC,杀怪等需要自动寻路能走到其他场景中的NPC或者怪物或者是其他任何东西。 blog:具体内容 ...

    RGP游戏人物45度地图+A星寻路算法 v1.1.10.rar

    在计算机游戏开发领域,尤其是角色扮演游戏(Role-Playing Game,简称RPG)中,45度角地图渲染和寻路算法是两个至关重要的技术。本资源“RGP游戏人物45度地图+A星寻路算法 v1.1.10.rar”包含了实现这些功能的源代码...

    actionscript RPG 寻路算法游戏源码

    在游戏开发中,寻路算法是一项至关重要的技术,它决定了游戏角色如何在游戏世界中智能地移动。本篇文章将深入探讨一个基于ActionScript的RPG游戏源码,特别是其中采用的A星(A*)寻路算法。ActionScript是一种广泛...

    2D游戏 8方向 寻路功能模拟

    在开发2D游戏时,寻路功能是游戏逻辑中的关键部分,它决定了游戏对象如何从一个位置移动到另一个位置。本项目重点在于实现8方向的寻路功能模拟,这是一种简化版的路径寻找算法,适用于2D环境。我们将讨论8方向寻路的...

    深度寻路算法 迷宫问题

    深度寻路算法是计算机科学中解决路径搜索问题的一种方法,特别是在图形理论和人工智能领域中广泛应用。迷宫问题作为深度寻路算法的经典应用,通常涉及到在一个复杂的网格或图结构中找到从起点到终点的最短路径。在这...

    游戏场景寻路完整代码

    游戏开发中的自动寻路系统是实现游戏智能化和增强玩家体验的关键技术之一。在这个"游戏场景寻路完整代码"中,我们主要关注的是如何在游戏环境中让角色或NPC(非玩家角色)从一个位置智能地移动到另一个位置,尤其是...

Global site tag (gtag.js) - Google Analytics