gamemaker吧 关注:13,696贴子:95,910
  • 5回复贴,共1
mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag)
这个函式可以根据a*演算法算出一条接近最短距离的路径(官方说明档说的..)
mp_grid_add_instances(id,obj,prec)
而这个函式可以增加阻挡物,就是移动时必须绕过这个实例
问题就来了...
我使用了之后,这个路径还是会穿过阻挡物,直接到达终点
http://cid-a5a99a6495eb21a7.skydrive.live.com/self.aspx/GM8/%e5%9c%96%e7%89%87/%e6%9c%aa%e5%91%bd%e5%90%8d.JPG
图上的线为路径,block为阻挡物,由1走到2,他直接穿越了....
gmk档
http://cid-a5a99a6495eb21a7.skydrive.live.com/self.aspx/GM8/%e7%af%84%e4%be%8b/problem.gmk
求高手解答我的问题出在哪...
(这个问题是延续战棋slg路径那篇....)


1楼2010-06-01 11:31回复
    补充:一开始跳出来的message_box显示的是整个路径的长度(以32为一单位)


    2楼2010-06-01 11:34
    回复
      2026-02-23 20:27:47
      广告
      不感兴趣
      开通SVIP免广告
      mp_grid_add_instances(id,obj,prec) 标记所有与指定对象的实例交叉的单元为禁止通行。
      这是必须的哦


      IP属地:四川3楼2010-06-01 12:06
      回复
        我发现我错在哪里了...
        我把mp_grid_add_instances(id,obj,prec)放在
        mp_grid_path(id,path,xstart,ystart,xgoal,ygoal,allowdiag)
        下面..


        4楼2010-06-01 12:20
        回复
          mp_grid_add_instances(id,obj,prec)甚至可以用在移动物体上~,但是你每次必须利用mp_grid_clear_all(id) 清理一次,否则人物通过的地方将永远不可行


          IP属地:四川5楼2010-06-01 12:23
          回复
            我打算人物进入移动选择状态就重新生成一次path
            还在打算要不要结束移动就清理掉原本的grid
            但还是算了 这样子好像反而消耗资源
            grid大小只有range*2+1应该不是很吃资源


            6楼2010-06-01 12:55
            回复