在RTS游戏中,当您移动某些单位时,他们会找到路径并前往最接近所选位置的位置。我不知道如何选择那些地方,我的意思是每个单位的目标点。
例如,当我派遣9名士兵时,我希望他们有这样的目标:
. - empty,
T - targets for units,
O - the place that I've choosen to move them, target for unit too
.....
.TTT.
.TOT.
.TTT.
.....
寻路算法准备就绪,我需要生成目标点的列表(或矢量),每个单元一个。我不想要完整的代码,只是一些建议和想法......我必须记住,并非所有的地方都可以步行......
Thanx对任何回复,抱歉我的英语不好......
答案 0 :(得分:1)
您可以使用分配点中的BFS。如果所选图块是可以容纳单元[不是障碍物]的图块,则使用单位“填充”所选图块。继续这样做,直到你“耗尽”单位数量。
在伪代码中:
selectTargetLocation(point,units):
currUnit <- 0
queue<- new queue
visited <- {}
map<unit,point> <- empty map
queue.push(point)
while (queue.empty() == false):
current <- queue.takeFirst()
visited.add(current)
for each p such that p and current are neighbors: //insert neighbors to queue
if p is not in visited:
queue.push(p)
if current is not an obstacle:
map.put(unit[currUnit++],current)
if (currUnit == units.length) break //break when exhausted all units
return map
答案 1 :(得分:1)
我的想法是这样的:首先,测试目的地是否被占用,或者一个单位是否已经拥有该目的地。如果是这种情况,则需要找到一个免费的关闭点。您可以将所有近点推送到当前点的队列,依此类推......类似于填充算法),直到找到未占用的点。然后,找到该位置的路径。