【逆旅】algodoo进阶教程2:弹跳板,传送带和重力改变板
通过本次教程,可以让大家掌握弹跳板,传送带,重力改变板等基础元件制作。
目录
一、弹跳板
二、传送带基础版
三、重力改变板

一、弹跳板
为了让小球碰到水平放置的板子有弹跳的效果,则我们可以在该板子的脚本中写:
onCollide = (e)=>{
e.other.vel = [ x , y ]
}
就会有如下的效果:

二、传送带(基础版)
在 @灰安教主 的地图中经常看到有的关卡四周有天蓝色的传送带:

其实它的制作也很简单:
竖直向上传送带:onCollide = (e)=>{
e.other.vel = [ 0 , a ]
}
水平传送带:onCollide = (e)=>{
e.other.vel = [ a , 0 ]
}
注意:1.a的值尽量偏大,具体数值需按实际运行效果调试
2.别忘了给传送带加上“>>>>”的文字哦
三、重力改变板
1.单球重力改变
要想改变单球重力,那么一切操作只能针对这个球本身。
所以我们要对小球进行加速度的改变。
众所周知,重力加速度g约等于9.8m/s^2,那么如果我们想让小球向上加速且像在重力场一样,就要把小球的加速度改为-9.8m/s^2。
于是就有了如下代码:
在板子的oncollide里写
oncollide = (e)=>{
e.other.postStep := (e)=>{
vel = vel + [0, 2 * sim.gravitystrength / sim.frequency]
}
}
解释一下:sim.gravitystrength就是g,但我们不能直接用,因为我们是在对小球进行每帧速度改变,因此要除以sim.frequency(每秒运行帧数),也就是60。△a=2g,故前面要乘二。
同理,如果要向右,则
oncollide = (e)=>{
e.other.postStep := (e)=>{
vel = vel + [sim.gravitystrength / sim.frequency, sim.gravitystrength / sim.frequency]
}
}
要想改回来,则写
oncollide = (e)=>{
e.other.postStep := (e)=>{}
}
即可。
2.全体重力改变
这个就简单多了,改变全体重力,就是改变重力方向。
但是我们只能在重力选项里手动调节,因此需要找到该控制选项对应的变量进行修改。
通过查表可得,其变量名是sim.gravityAngleOffset,默认值是0,弧度制,方向竖直向下,顺时针旋转的弧度数即为其值。
则我们可以写:
oncollide = (e)=>{
sim.gravityAngleOffset = 3.1415927
}
以此来使全场重力方向向上。
我还利用这个特地做了一期国色比赛,大家可以在这里看一下实际效果。

好了,这一期的教程就结束了哦
留个作业:请大概写出上面的视频里青黑闪方块和红白闪方块的代码
下期内容预告:区域性碰撞块(毒气,传送带等)