如何实现《金山打字通》中“太空大战”里面子弹那种轨迹?

2016-06-07 13:59:21 +08:00
 Jayzer

我用 Gamemaker 写一个游戏,游戏操作方式是敌人跟踪玩家。 目前用的是“检测玩家位置并向那里移动”,想要实现太空大战里面那种子弹摇摇摆摆飞向敌机的效果,捣鼓了很久却弄不出来,故来此请教各位前辈,谢谢!

4238 次点击
所在节点    游戏开发
3 条回复
Jayzer
2016-06-07 14:26:24 +08:00
视频示例: http://www.bilibili.com/video/av3628624/
从三分开始
lazylax
2016-06-07 14:37:15 +08:00
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 群寻找一下教程
lazylax
2016-06-07 14:46:38 +08:00
游戏中决定移动轨迹的是公式, 通过公式来计算 x 和 y 方向当前帧该移动多少值,像追踪这种移动,基本上就是计算出“当前点“到“目标点“的向量,然后把它标准化,再分别得出 x 方向和 y 方向上的位移,

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/284110

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX