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

【逆旅】algodoo进阶教程2:弹跳板,传送带和重力改变板

2023-09-23 12:37 作者:逆旅谭帝谔  | 我要投稿

通过本次教程,可以让大家掌握弹跳板,传送带,重力改变板等基础元件制作。

目录

一、弹跳板

二、传送带基础版

三、重力改变板

一、弹跳板

为了让小球碰到水平放置的板子有弹跳的效果,则我们可以在该板子的脚本中写:

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

}

以此来使全场重力方向向上。

我还利用这个特地做了一期国色比赛,大家可以在这里看一下实际效果。

链接:【逆旅】第13期——本末倒置


好了,这一期的教程就结束了哦

留个作业:请大概写出上面的视频里青黑闪方块和红白闪方块的代码

下期内容预告:区域性碰撞块(毒气,传送带等)

【逆旅】algodoo进阶教程2:弹跳板,传送带和重力改变板的评论 (共 条)

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