【提问】为什么一直提示变量“mu”为零
gamemaker吧
全部回复
仅看楼主
level 12
_GASTER☜_ 楼主
(上一个贴被度娘删了,我并没有重复发同样的贴子)
经过某位热心网友的帮助,首先,我先描述一下我的脚本“scr_pb”内容:
(这个脚本下面有一个“var a;”没有截到,但确实写了)
之后,这是我使用脚本时,写出的代码:
之后,在我运行这段代码的时候,它就一直在提醒我“变量mu为零”。所以,是我哪里写错了吗?
2018年07月05日 14点07分 1
level 15
emmm你这写的有点点奇怪。
首先根据你截图里行号14下面并无15,不知道你说的“脚本下面有一个var a”是什么意思?
其次你的脚本里并未声明a,var a如果按你说的放在最后是没用的应该放在最前,但放在最前你也没有给它赋值;按你写的其他部分推测你是想a代表一个有angle, timeuse.....mu等变量的实例,但你并未给出这个实例对应object的代码。是想说pb_eight吗?可能是这个object没有声明mu,但根据你这个脚本并看不出来。
最后你的脚本返回了a,但你调用脚本的时候并未用到返回值,也就是说你脚本里写了这么多行,实际上调用的时候只有第12刚有存在价值。
所以综上所述,再把你的问题描述得详细一些有助于解决问题。
2018年07月05日 15点07分 2
level 13
根据脚本的格式,你的a应该是一个对象的实例,你还应该把a所索引的对象的代码截图上来
2018年07月06日 04点07分 3
level 12
正确写法:脚本中(第一行开始):var a;a=instance_create(arg5,arg6,pb_eight);a.xxxx=xx;a.xxxx=xx;......;return a。
2018年07月06日 06点07分 4
level 12
_GASTER☜_ 楼主
好了,感谢各位网友的帮助。
然后,问题还是没解决。
现在这里是我改进以后的脚本:
很奇怪。另外,关于“pb_eight”这个实例的信息,为了防吞,我会单独发在楼下。
2018年07月06日 09点07分 5
level 12
_GASTER☜_ 楼主
对象信息: pb_eight
精灵: spr_pb
固体: false
可见: true
深度: -10
持久: false
父对象: <没有对象>
遮罩: <与精灵相同>
创建事件:
执行代码:
image_angle=angle
image_xscale=xscale;image_yscale=yscale
boom=0//if boom = tuse, boom.
{move_towards_point(ex,ey,point_distance(x,y,ex,ey)/mu)}
//mu= move use's time
步事件:
执行代码:
//pb(angle,timeuse,xscale,yscale,si,fx,fy,ex,ey,moveuse)
if(x=ex && y=ey)
{
if(ex+ey!=0){move_towards_point(ex,ey,point_distance(x,y,ex,ey)/mu)}
if(ex+ey=0 && ey<0 && ex>=0){move_towards_point(ex,ey,point_distance(x,y,ex,ey)/mu)}
if(ex+ey=0 && ex<0 && ey>=0){move_towards_point(ex,ey,point_distance(x,y,ex,ey)/mu)}
exit;
}
boom+=1
if(boom=timeuse)
{
instance_create(x,y,pb1);pb1.image_angle=angle;pb1.image_yscale=999;pb1.image_xscale=self.image_xscale;
instance_create(x,y,pb2);pb2.image_angle=angle+45;pb2.image_yscale=999;pb2.image_xscale=(self.image_xscale+self.image_yscale)/2
instance_create(x,y,pb3);pb3.image_angle=angle+90;pb3.image_yscale=999;pb1.image_xscale=self.image_yscale;
instance_create(x,y,pb4);pb4.image_angle=angle+135;pb4.image_yscale=999;pb1.image_xscale=(self.image_xscale+self.image_yscale)/2
instance_create(x,y,pb5);pb5.image_angle=angle+180;pb5.image_yscale=999;pb1.image_xscale=self.image_xscale;
instance_create(x,y,pb6);pb6.image_angle=angle+225;pb6.image_yscale=999;pb1.image_xscale=(self.image_xscale+self.image_yscale)/2
instance_create(x,y,pb7);pb7.image_angle=angle+260;pb7.image_yscale=999;pb1.image_xscale=self.image_yscale;
instance_create(x,y,pb8);pb8.image_angle=angle
+3
05;pb8.image_yscale=999;pb1.image_xscale=(self.image_xscale+self.image_yscale)/2
self.image_alpha=0
}
if(boom>timeuse)
{
pb1.image_alpha-=0.04;if(pb1.image_alpha=0){with(pb1)instance_destroy();}
pb2.image_alpha-=0.04;if(pb2.image_alpha=0){with(pb2)instance_destroy();}
pb3.image_alpha-=0.04;if(pb3.image_alpha=0){with(pb3)instance_destroy();}
pb4.image_alpha-=0.04;if(pb4.image_alpha=0){with(pb4)instance_destroy();}
pb5.image_alpha-=0.04;if(pb5.image_alpha=0){with(pb5)instance_destroy();}
pb6.image_alpha-=0.04;if(pb6.image_alpha=0){with(pb6)instance_destroy();}
pb7.image_alpha-=0.04;if(pb7.image_alpha=0){with(pb7)instance_destroy();}
pb8.image_alpha-=0.04;if(pb8.image_alpha=0){with(pb8)instance_destroy();}
}
if(boom=timeuse+1){all.x-=si;all.y-=si;}
if(boom=timeuse+2){all.x+=si;all.y+=si;}
if(boom=timeuse+30){instance_destroy();}
2018年07月06日 09点07分 6
level 12
_GASTER☜_ 楼主
(后来想了想,直接发文本还是太危险,再用图片补发吧)
2018年07月06日 09点07分 7
level 15
instance_create函数执行时已经执行了pb_eight的创建事件,此时下面的a.angle=argument0什么的还未执行,所以你在pb_eight的创建事件里用的angle啊mu啊什么的此时都是未声明的变量。
2018年07月06日 11点07分 8
level 12
1,建议在pb_eight中全部声明angle,timeuse,xscale等变量为特定初值。2,创建事件中的move_towards_point可以延迟1帧执行(用alarm)这个方法有助于除与变量有关的bug。
2018年07月06日 11点07分 9
1