求问:能否在GameMaker中复刻Unity风格的战棋RPG实现方案?
当然有不少开发者尝试过这种复刻,格子移动战术RPG的核心逻辑是相通的,只是GameMaker和Unity的API、工具链不同,只要把Unity教程里的逻辑拆解成基础模块,就能对应到GameMaker里实现:
格子地图数据管理:Unity里常用数组或ScriptableObject存格子状态,GameMaker可以用
ds_grid或者原生二维数组来存储,比如:// 初始化10x10的格子地图,0代表可走,1代表障碍物 global.grid = array_create(10, array_create(10, 0)); global.grid[3][4] = 1; // 标记某格为障碍物地图的可视化直接用GameMaker的Tile Set和Room的Tile Layer搭建就行,和Unity的Tilemap逻辑一致。
点击格子与坐标转换:Unity里通过射线检测获取点击的Tile,GameMaker可以直接将鼠标坐标转换为格子坐标:
// 假设单格大小是32px var tile_size = 32; var target_grid_x = floor(mouse_x / tile_size); var target_grid_y = floor(mouse_y / tile_size);再结合之前的地图数据,判断目标格子是否可走。
路径查找与角色移动:Unity常用A插件或自定义A算法,GameMaker有内置的
mp_grid系列函数可以快速实现路径规划,也可以自己写A*逻辑。角色移动的平滑过渡,不用Unity的协程,直接在Step事件里用move_towards_point逐步移动:// 角色Step事件 if (state == "moving") { var target_x = target_grid_x * tile_size + tile_size/2; var target_y = target_grid_y * tile_size + tile_size/2; move_towards_point(target_x, target_y, 4); // 4是移动速度 // 到达目标后切换状态 if (distance_to_point(target_x, target_y) < 1) { state = "idle"; } }战术逻辑迁移:把Unity教程里的回合制流程、技能范围检测这些逻辑,拆解成独立的函数或对象来实现——比如技能范围用格子坐标的遍历判断,回合制用全局变量控制当前行动角色,这些逻辑和工具无关,只需要用GameMaker的语法重写即可。
本质上不用刻意“复刻”Unity的组件写法,只要抓住教程里的核心逻辑(比如如何管理格子状态、如何计算移动路径、如何处理回合流程),用GameMaker对应的API实现就好,很多GameMaker的战术RPG教程也是基于这套逻辑的。
内容的提问来源于stack exchange,提问作者HopeSteel Studios




