使用GML的八方向自動尋路

使用GML的八方向自動尋路

本教程適合無基礎人員使用.函數


提示

本教程中僅使用了最簡單的方法,而且有一些錯誤和不規範之處。請諒解一下,在評論區提出,我會修改。古人曰「教學相長」,但願你們和我一塊兒學習,一塊兒進步!post

效果展現

八方向自動尋路

八方向自動尋路學習


原理闡述

  1. 玩家單擊
  2. 創造路徑
  3. 添加尋路到路徑
  4. 沿路徑運動
  5. 繪製精靈和路徑

具體實現

  1. 添加兩個精靈:
    • spr_player
    • spr_block
      其中spr_player的原點須要設爲中心。
  2. 添加兩個物體:
    • obj_player
    • obj_block
  3. 進入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)
  1. 進入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)
}
  1. 進入obj_player的繪製事件
draw_sprite(spr_player,0,x,y)
draw_path(lj,x,y,1)
  1. 在房間內隨機放置你想要的障礙物。
  2. 隨手保存。
  3. 按F5進行測試。

若是隻是須要這個功能,到此就能夠結束了。測試


代碼解釋

lj=path_add();code

添加一條路徑。htm

xl=mp_grid_create(0,0,room_width/32,room_height/32,32,32);對象

初始化尋路blog

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)

分別是畫精靈和路徑

總結

主要是掌握路徑和尋路函數的簡單使用

註釋

  1. 添加障礙物時,能夠使用父對象。
  2. 若是把步驟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);,就變成了四方向自動尋路。
  3. 本文所用源碼已提供附件下載。可前往http://gamemake.org/post-update-17540.htm下載。

其餘

本文首發於Gamemaker開發者之家,未經容許禁止轉載。博客園是Tesla本人發佈的!

商業合做請聯繫rainbowstesla@gmail.com或rainbows666@foxmail.com。

相關文章
相關標籤/搜索