我用 Gamemaker 写一个游戏,游戏操作方式是敌人跟踪玩家。 目前用的是“检测玩家位置并向那里移动”,想要实现太空大战里面那种子弹摇摇摆摆飞向敌机的效果,捣鼓了很久却弄不出来,故来此请教各位前辈,谢谢!
1
Jayzer OP 视频示例: http://www.bilibili.com/video/av3628624/
从三分开始 |
2
lazylax 2016-06-07 14:37:15 +08:00 1
scr_MoveToPointDecelerated.gml
/// 带减速的朝鼠标移动 var point_x = argument0 var point_y = argument1 var max_speed = argument2 var min_dsts = argument3 { var cur_dsts = point_distance(x,y,point_x,point_y); if (cur_dsts >= min_dsts) { cur_speed = max_speed; } else { cur_speed = cur_dsts/(min_dsts/max_speed); } if (cur_dsts > cur_speed) { move_towards_point(point_x,point_y,cur_speed); } else { x = point_x; y = point_y; speed = 0; } } 以前用 gm 开发时写过一段脚本,你可以先试试“子弹飞向鼠标”这个效果,一边修改代码测试效果一边理解代码,理解后,再把脚本中鼠标改成当前正在追踪的敌人坐标就是你想要的效果了 不过,如果你还没进阶到掌握脚本语言写游戏的程度,只是拖拽 GM 的功能块去实现效果,我觉得你可以去别处 GM 相关论坛和 QQ 群寻找一下教程 |
3
lazylax 2016-06-07 14:46:38 +08:00
游戏中决定移动轨迹的是公式, 通过公式来计算 x 和 y 方向当前帧该移动多少值,像追踪这种移动,基本上就是计算出“当前点“到“目标点“的向量,然后把它标准化,再分别得出 x 方向和 y 方向上的位移,
|