使用GML的八方向自动寻路
Posted tesla-173
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用GML的八方向自动寻路相关的知识,希望对你有一定的参考价值。
使用GML的八方向自动寻路
本教程适合无基础人员使用.
提示
本教程中仅使用了最简单的方法,并且有一些错误和不规范之处。请谅解一下,在评论区提出,我会修改。古人曰“教学相长”,希望大家和我一起学习,一起进步!
效果展示
八方向自动寻路
原理阐述
- 玩家单击
- 创造路径
- 添加寻路到路径
- 沿路径运动
- 绘制精灵和路径
具体实现
- 添加两个精灵:
- spr_player
- spr_block
其中spr_player的原点需要设为中心。
- 添加两个物体:
- obj_player
- obj_block
- 进入obj_player的创建事件
lj=path_add();
xl=mp_grid_create(0,0,room_width/32,room_height/32,32,32);
mp_grid_add_instances(xl,obj_block,0)
- 进入obj_player的步事件
if(mouse_check_button_pressed(mb_left))
{
mp_grid_path(xl,lj,x,y,mouse_x,mouse_y,1);
path_start(lj,7,0,1)
}
- 进入obj_player的绘制事件
draw_sprite(spr_player,0,x,y)
draw_path(lj,x,y,1)
- 在房间内随机放置你想要的障碍物。
- 随手保存。
- 按F5进行测试。
如果只是需要这个功能,到此就可以结束了。
代码解释
lj=path_add();
添加一条路径。
xl=mp_grid_create(0,0,room_width/32,room_height/32,32,32);
初始化寻路
mp_grid_add_instances(xl,obj_block,0)
将obj_block添加到障碍物
mouse_check_button_pressed(mb_left)
检查鼠标左键是否按下
mp_grid_path(xl,lj,x,y,mouse_x,mouse_y,1);
添加一个寻路
path_start(lj,7,0,1)
沿路径开始运动
draw_sprite(spr_player,0,x,y)
draw_path(lj,x,y,1)
分别是画精灵和路径
总结
主要是掌握路径和寻路函数的简单使用
注释
- 添加障碍物时,可以使用父对象。
- 如果把步骤4:obj_player步事件中的
mp_grid_path(xl,lj,x,y,mouse_x,mouse_y,1);
改成mp_grid_path(xl,lj,x,y,mouse_x,mouse_y,0);
,就变成了四方向自动寻路。 - 本文所用源码已提供附件下载。可前往http://gamemake.org/post-update-17540.htm下载。
其他
本文首发于Gamemaker开发者之家,未经允许禁止转载。博客园是Tesla本人发布的!
商业合作请联系rainbowstesla@gmail.com或rainbows666@foxmail.com。
以上是关于使用GML的八方向自动寻路的主要内容,如果未能解决你的问题,请参考以下文章