游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1594|回复: 3

不同楼层之间的寻路

[复制链接]

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2010-2-20 15:56:00 | 显示全部楼层 |阅读模式
[em24]起点和终点在不同的楼层的寻路怎么实现,用A*的话连接两个楼层之间的点的f值怎么算,f函数怎么写比较好?

30

主题

422

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2010-2-20 22:09:00 | 显示全部楼层

Re:不同楼层之间的寻路

直接用直线距离也可,有解的话总是可以找到。
当然效果取决于楼层之间通道的数量和分布。

1

主题

2

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2010-2-21 09:37:00 | 显示全部楼层

Re: 不同楼层之间的寻路

直接用距离的话,算法总是先往目标的正下方/上方搜索,如果楼梯不在同一个方向,感觉效率很低。

30

主题

422

帖子

433

积分

中级会员

Rank: 3Rank: 3

积分
433
发表于 2010-2-22 00:31:00 | 显示全部楼层

Re:不同楼层之间的寻路

那么先把楼层按可达区域划分为若干节点。按楼层之间的通道建立节点的联系。
将寻路拆分为大尺度上寻找从出发点所在区域到目标点所在区域的节点路径;
小尺度上在节点内由a*寻找起始节点中出发点到楼层通道的、中间节点中的楼层通道到楼层通道、末尾节点中的楼层通道到目标点的路径。
最后连接所有路径。
大尺度上的节点使用哪种方式寻路则还需要由具体情况决定。
如果区域节点之间存在多个通道,则在小尺度寻路时还需要枚举选择不同通道时的权做比较。
如果连续多层出现多个通道可用,则可考虑对每层的通道作为中间状态用动态规划求最佳路径。
当不必找到最优路径的时候,则可随机选取通道。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-14 13:15

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表