(求助)关于跟随运动的问题
gamemaker吧
全部回复
仅看楼主
level 9
◆依稀♤ 楼主
我原本想要的效果是这样的:
此对象在距离玩家(objPlayer)500像素以内的时候,
1,先短暂停顿
2,追着玩家走
3,保持方向不变,快速冲刺
4,逐渐减速至不动
5,迎来下一次的距离检测
然而,[汗]
只要存在第2部分(也就是代码50<timer<150的部分),此对象就会完全无视其他的几部分,从始至终追着玩家不放,完全没有加大速度或停止运动的迹象。[泪]
代码如下:
2019年03月21日 06点03分 1
level 9
◆依稀♤ 楼主
create事件:
timer=0;
F=0;
step事件:
if(point_distance(x,y,objPlayer.x,objPlayer.y)<=500&&timer=0)
{
F=1;
timer=1;
}
if(F=0)
{
speed=0;
}
if(F=1)
{
timer+=1;
}
if(50<timer<150)
{
speed=3;
direction=point_direction(x,y,objPlayer.x,objPlayer.y);
}
if(timer=150)
{
speed=8;
direction=point_direction(x,y,objPlayer.x,objPlayer.y);
}
if(timer=200)
{
friction=0.05;
}
if(speed=0)
{
friction=0;
}
if(timer=350)
{
timer=0;
F=0;
}
2019年03月21日 06点03分 2
level 9
◆依稀♤ 楼主
我试过把
if(50<timer<150)
{
speed=3;
direction=point_direction(x,y,objPlayer.x,objPlayer.y);
}
换成用move_towards_point(x,y,sp)表达,但效果一样。
此外,从调试模式中看,timer确实是从0到350不断循环。
我甚至怀疑,只要move_towards不以时间点,而以时间段作为条件,就无视其他代码。
求助啊啊啊[狂汗]
2019年03月21日 06点03分 3
level 15
判断等于不是应该用双等号==么
2019年03月21日 08点03分 4
改了一下,可惜还是老样子啊~ε=(´ο`*)))唉
2019年03月21日 09点03分
level 9
◆依稀♤ 楼主
尝试把“=”改成了“==”
然而依旧行不通啊[泪]
2019年03月21日 09点03分 5
嗯……我发现了一个低级问题,那就是50<=timer<150这个写法在大多数语言里面都是错误的,居然没察觉[黑线]应该用timer>=50 && timer<150
2019年03月21日 11点03分
另外对于不会同时成立的条件,建议使用else语句并列起来
2019年03月21日 11点03分
成功了!!! 果然是这个问题! 谢谢你[太开心][太开心][太开心]
2019年03月21日 12点03分
level 9
◆依稀♤ 楼主
此贴终结[捂嘴笑]
2019年03月21日 12点03分 6
1