跨地图寻路 和 NPC追踪(一. 数据配置)
2010-09-15 01:11 平凡主义 阅读(842) 评论(0) 编辑 收藏 举报在RPG 游戏中A Start 用到最多的寻路算法,但是在做任务的时候却无法实现场景寻路,为了这个网上找了很久都没有找到。所以只有自己写一个了。
首先需要将场景中的传送门的数据得到我定义的格式是这样的。当然这个数据结构在实际操作中应该是通过生成得到。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 <?xml version="1.0" encoding="utf-8" ?>
2 <Maps>
3 <Map Id ="1">
4 <Door Id="1" MapId="1" TargetMapId="2" x="11" y="22" />
5 <Door Id="2" MapId="1" TargetMapId="3" x="22" y="32" />
6 <Door Id="3" MapId="1" TargetMapId="4" x="54" y="34" />
7 </Map>
8 <Map Id ="2">
9 <Door Id="5" MapId="2" TargetMapId="1" x="42" y="12" />
10 <Door Id="4" MapId="2" TargetMapId="5" x="54" y="21" />
11
12 </Map>
13 <Map Id ="3">
14 <Door Id="6" MapId="3" TargetMapId="6" x="32" y="14" />
15 <Door Id="7" MapId="3" TargetMapId="1" x="54" y="23" />
16 </Map>
17 <Map Id ="4">
18 <Door Id="8" MapId="4" TargetMapId="7" x="65" y="21" />
19 <Door Id="9" MapId="4" TargetMapId="1" x="32" y="42" />
20 </Map>
21 <Map Id ="5">
22 <Door Id="10" MapId="5" TargetMapId="6" x="64" y="23" />
23 </Map>
24 <Map Id ="6">
25 <Door Id="11" MapId="6" TargetMapId="7" x="34" y="65" />
26 </Map>
27 <Map Id ="7">
28 <Door Id="12" MapId="7" TargetMapId="8" x="23" y="24" />
29 </Map>
30 <Map Id ="8">
31 <Door Id="13" MapId="8" TargetMapId="7" x="23" y="24" />
32 </Map>
33 </Maps>
第二步 得到世界NPC信息
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
<?xml version="1.0" encoding="utf-8" ?>
<Maps>
<Map Id ="1">
<Door Id="1" MapId="1" TargetMapId="2" x="11" y="22" />
<Door Id="2" MapId="1" TargetMapId="3" x="22" y="32" />
<Door Id="3" MapId="1" TargetMapId="4" x="54" y="34" />
</Map>
<Map Id ="2">
<Door Id="5" MapId="2" TargetMapId="1" x="42" y="12" />
<Door Id="4" MapId="2" TargetMapId="5" x="54" y="21" />
</Map>
<Map Id ="3">
<Door Id="6" MapId="3" TargetMapId="6" x="32" y="14" />
<Door Id="7" MapId="3" TargetMapId="1" x="54" y="23" />
</Map>
<Map Id ="4">
<Door Id="8" MapId="4" TargetMapId="7" x="65" y="21" />
<Door Id="9" MapId="4" TargetMapId="1" x="32" y="42" />
</Map>
<Map Id ="5">
<Door Id="10" MapId="5" TargetMapId="6" x="64" y="23" />
</Map>
<Map Id ="6">
<Door Id="11" MapId="6" TargetMapId="7" x="34" y="65" />
</Map>
<Map Id ="7">
<Door Id="12" MapId="7" TargetMapId="8" x="23" y="24" />
</Map>
<Map Id ="8">
<Door Id="13" MapId="8" TargetMapId="7" x="23" y="24" />
</Map>
</Maps>