【逆旅】algodoo進階教程2:彈跳板,傳送帶和重力改變板
通過本次教程,可以讓大家掌握彈跳板,傳送帶,重力改變板等基礎(chǔ)元件制作。
目錄
一、彈跳板
二、傳送帶基礎(chǔ)版
三、重力改變板

一、彈跳板
為了讓小球碰到水平放置的板子有彈跳的效果,則我們可以在該板子的腳本中寫:
onCollide =?(e)=>{
e.other.vel = [ x , y ]
}
就會有如下的效果:

二、傳送帶(基礎(chǔ)版)
在 @灰安教主 的地圖中經(jīng)常看到有的關(guān)卡四周有天藍色的傳送帶:

其實它的制作也很簡單:
豎直向上傳送帶:onCollide = (e)=>{
e.other.vel = [ 0 , a ]
}
水平傳送帶:onCollide = (e)=>{
e.other.vel?= [ a?, 0?]
}
注意:1.a的值盡量偏大,具體數(shù)值需按實際運行效果調(diào)試
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(每秒運行幀數(shù)),也就是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.全體重力改變
這個就簡單多了,改變?nèi)w重力,就是改變重力方向。
但是我們只能在重力選項里手動調(diào)節(jié),因此需要找到該控制選項對應的變量進行修改。
通過查表可得,其變量名是sim.gravityAngleOffset,默認值是0,弧度制,方向豎直向下,順時針旋轉(zhuǎn)的弧度數(shù)即為其值。
則我們可以寫:
oncollide?=?(e)=>{
? ? sim.gravityAngleOffset = 3.1415927
}
以此來使全場重力方向向上。
我還利用這個特地做了一期國色比賽,大家可以在這里看一下實際效果。

好了,這一期的教程就結(jié)束了哦
留個作業(yè):請大概寫出上面的視頻里青黑閃方塊和紅白閃方塊的代碼
下期內(nèi)容預告:區(qū)域性碰撞塊(毒氣,傳送帶等)