我有一个使用网格的寻路敌人,但我还不完全理解网格,正在努力调节它使敌人行为正确。 敌人的精灵大小为64x64(尽管我可能会在将来改变它)。 如果设置网格大小太低,他会沿着墙壁行走而被墙壁剪切一半。 将其设置为64似乎很好,但如果玩家贴着墙壁,敌人就找不到玩家。 我需要敌人不剪切墙壁,因为它需要与墙壁碰撞(反弹),并且通过将x = xprevious和y = yprevious设置为他就无法滑动在墙壁上,而是停在墙壁上。 如果您能提供帮助使敌人能够与墙壁碰撞,同时绕过它们,我将非常感激。

//在一个网格设置对象中
grid = mp_grid_create(0,0,room_width/32, room_height/32, 32,32)
mp_grid_add_instances(grid,Owallparent,1)

//在敌人对象中,闹钟0
case "chase"://-----------------------------------------------------------
path_delete(path)
path = path_add()
target_x = Oplayer.x
target_y = Oplayer.y
mp_grid_path(Osetuppath.grid, path, x, y, target_x, target_y, 1 )
path_start(path,move_speed,path_action_continue,false)
alarm[0] = 10