使用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。