(求助)怎样让一个有独立Ai的小怪遇墙停止运动
gamemaker吧
全部回复
仅看楼主
level 9
◆依稀♤ 楼主
本希望让这个对象间断性的向右运动,然后遇墙停止,但它根本停不下来[泪]
create事件:
t=0;
timer=0;
step事件:
//下落
if(!place_free(x,y+vspeed))
{
if(vspeed <= 0)
{
move_contact_solid(90,abs(vspeed));
}
if(vspeed > 0)
{
move_contact_solid(270,abs(vspeed));
}
vspeed=0;
gravity = 0;
}
else{
gravity=1;
}
//向右做加速运动
timer-=1;
if(timer==0)
{
timer=200;
alarm[0]=50;
t=1;
}
if(t==1)
{
hspeed+=0.1;
}
//遇障碍物停止
if(!place_free(x+hspeed,y))
{
hspeed=0;
}
alarm[0]事件:
if(t==1)
{
t=0;
hspeed=0;
}
2019年03月08日 23点03分 1
level 9
◆依稀♤ 楼主
顺便说一下,我在利用限制坐标的方法后确实可以成功,但我想最好不这样做。而是让这个对象自己检测到障碍物,然后停止。
if(x>2150)
{
x=2150;
hspeed=0;
}
if(x<101)
{
x=101;
hspeed=0;
}
2019年03月09日 00点03分 2
level 13
[勉强]方式挺多的,如果墙的精灵有碰撞遮罩,可以用碰撞检测:
if(collision_rectangle(x-自己宽度,y-自己宽度,x+自己宽度,y+自己宽度,墙,0,1)){
停止;
}else{
移动;
}
如果墙的精灵没有碰撞遮罩,可以使用坐标计算:
with(墙){
if(other.x>x-墙宽度&&other.x<x+墙宽度&&other.y>y-墙宽度&&other.y<y+墙宽度){
other.停止;
}else{
other.移动;
}
}
2019年03月09日 06点03分 4
感谢解答疑惑
2019年03月10日 02点03分
感谢
2019年03月11日 09点03分
1