欢迎光临散文网 会员登陆 & 注册

自制小球淘汰赛教程(三)自定义变量

2023-08-01 19:31 作者:灰安教主  | 我要投稿

自定义变量有很多用途,比如传送门传了几个小球后自动消失,小球的分数等,都可以用自定义变量实现。

我现在讲的都是原理,后面会直接给出实际例子,实在看不懂原理的就等后面抄代码吧……

真的想做好原创球赛up,还是建议搞清楚原理,单纯复制别人的代码适合自娱自乐。

一、物体本身的变量。

右键打开物体的script脚本选单,左上角有一个黑色的长方形文本框,在这里就可以输入自定义变量。


随便一个物体脚本选单左上角

怎么自定义变量呢?

比如,我想给小球增加一个“血量”,那么,在这个文本框输入

_HP = 100 (创建变量也可以输入_HP := 100,一般情况没啥区别,需要区别时再说明)

再按回车键。

然后,你就会发现,下面就多出来了一个名为“_HP”的属性。

名字随便取,你也可以写其他英文/数字/下划线组合,_life,_XueLiang,_name5,随便起名,只要不跟已有的重复就行。

这个变量只对这个物体本身生效。

如果重复取名,会发生什么呢?

比如,现在已经有了_HP这个变量,如果我再在文本框输入_HP = 200并按回车键,那么就会发现下面的_HP = 右边也变成了200。

这些变量名称是按照英文字母顺序排列的,先排大写字母A到Z,然后下划线,最后小写字母a到z。

在实际使用中,变量名称如果只是大小写不同,那么就被视为同一个变量。

比如已有_HP的情况下,你再输入_hP = 300,_Hp =114,_hp = 999,并不会再创建新的变量,而是改变_HP的数值。

注意:

有下划线前缀的自定义变量,会永久保存,比如 _HP,_score。

没有加下划线的自定义变量,关掉场景时就会消失,比如HP,score。

所以想要永久保存的话,请一定记得加上下划线。

自定义变量本身只是一个数值,没有其他效果。

这个自定义变量怎么使用,看你自己。

比如我要把_HP当做小球的分数来使用,我在场上设置各种传送门,碰到一次就扣1分,那么在那个传送门的oncollide里加上

e.other._hp = e.other._hp - 1

就能实现积分赛里面的扣一分效果。


又或者,我要把_HP当做传送门的血量,只让49个球通过,49个球过去后,传送门就自动消失,那么就可以给传送门添加自定义变量 _HP = 49,并在oncollide里写

(e) = > {

  e.other.pos = [xx,yy];

  _HP = _HP -1

}

poststep里写

(e) = > {

  _HP <=0 ? {

    Timetolive = 0

}:{}

}

这样,这个传送门的初始HP是49,每传送一次HP就减一。随时判断HP是否小于等于0,如果已经小于等于0,立刻把传送门的存活倒计时改成0,立刻消失。


自定义变量不一定是数字,还可以是:

数组    [1,2,3],[15,36]

布尔变量   true或者false

字符串(文本),必须加上引号   ”矢车菊”  ”大青亡了”  “lime”


二、场景变量

场景变量的创建、使用方法跟物体本身的变量一模一样。

两者的区别就是:

物体本身的变量,在哪里创建的,就只适用于那个物体本身。

场景变量,随便你在哪里创建,都是这张图共用的。

至于场景变量的格式,很简单,就是创建物体本身变量的方法,只不过你得在名字前加上scene.my.

比如scene.my.hp = 100,scene.my.spots1 = 49

场景变量,关掉algodoo后不会消失,不用必须加下划线。


那么,说一下场景变量的使用实例。

还是以自动消失的传送门为例。

假如我在第一关画了3个传送门,我想让这三个传送门血量共用,三个传送门总共只能传送49个球,就可以使用场景变量了。

把前面物体变量例子的_HP,全部改成scene.my.hp即可。

即随便在某个script脚本选单里输入scene.my.hp = 49,

然后三个传送门oncollide里都写

(e) = > {

  e.other.pos = [xx,yy];

  scene.my.hp = scene.my.hp -1

}

poststep里写

(e) = > {

  scene.my.hp <=0 ? {

    Timetolive = 0

}:{}

}


第二关的传送门血量想设置成48,那再创建个场景变量scene.my.hp2 = 48,其他如法炮制即可。

同理,第三关传送门scene.my.hp3 = 47

第四关传送门scene.my.hp4= 46

……

在我发布的50球淘汰赛模板里,我每关酸橙色的过关传送门,血量都是以scene.my.spots的格式创建的场景变量。

第一关是scene.my.spots1

第二关是scene.my.spots2

……

这样,给功能类似的一系列变量起名时,加个数字编号,更方便识别。当然,你也可以随便取名,只不过变量创建太多了,可能会忘掉每个变量是干什么的。


场景变量还有另外一种创建方法:

按下键盘上的~键(左上角数字1旁边的那个),就会打开控制台。(不推荐新手使用控制台)

控制台

在控制台也可以输入scene.my.hp = 49,以此创建场景变量。

注意:如果你在控制台创建变量时不加scene.my.,而是直接写hp = 49,这叫做全局变量。

强烈推荐创建全局变量

全局变量适用于“这台电脑上的所有algodoo场景”,包括以前的、未来新建的、以及你下载的别人的图,都会有hp = 49这个变量。

然而你把图分享给其他人,在别的电脑上打开,就不会有hp =49这个变量。

别乱动控制台!创建变量建议都在物体的脚本选单进行,出了bug也好修复。


三、改变变量的数值

假如有个变量scene.my.hp = 100,以此为例介绍下改变此变量的方法。

改变变量,也在物体的脚本选单左上角进行。

方法一,手动赋值,格式是 变量名 = xxx

比如我直接输入scene.my.hp = 120,它的值就变成120了。

再输入scene.my.hp = 300,它的值就变成300了。

方法二,引用其他变量。

假设有另外一个变量scene.my.mp = 666

那么,如果我输入scene.my.hp = scene.my.mp,按下回车,就会发现scene.my.hp的值变得跟scene.my.mp一样了,也变成了666.

又假设,这个物体的密度density是2,那么我输入scene.my.hp = density,scene.my.hp就变成了2

输入scene.my.hp = density * 8,scene.my.hp就变成了16(2乘8)

方法三,自我运算。

比如,输入scene.my.hp = scene.my.hp - 1,按下回车,scene.my.hp就变成了99;再输入一次scene.my.hp = scene.my.hp - 1,按下回车,scene.my.hp就变成了98。


总结:自定义变量,随便取名字(注意不同变量名字别重复了)。

物体本身的变量,是这个物体专用的。一定要加上下划线前缀,才能永久保存。

场景变量,加上scene.my.前缀,这张图里面所有东西都通用。

全局变量,新人别碰。





自制小球淘汰赛教程(三)自定义变量的评论 (共 条)

分享到微博请遵守国家法律