From Test-Scratch-Wiki

滑行 () 秒到 X:() Y:()
滑行 () 秒到 X:() Y:()
類別 動作類積木
形狀 條形積木

滑行 () 秒到 X:() Y:() 積木,原文為 Glide () Secs to X: () Y: (),是個動作類條形積木。這個積木用來將角色平穩地移動到指定的座標,同時可以設定在指定的秒數內到達 - 有點像先讓角色面對某個方向,然後重複地使用移動 () 點,但這個積木能更精確的做到這件事。只不過,滑行積木有些缺點,第一個是是為了要防止在角色滑行時同時又會做其它事情,角色正在移動過程中會暫停其它程式。另外,滑行過程中只能用停止程式積木中斷,而碰到邊緣就反彈積木在角色滑行時將無法正常運作。

用法示例

每當角色需要滑動時,記得使用這個積木 - 以下是一些常用方式:

  • 魚兒在魚缸里移動
重複無限次 
  滑行 (隨機取數 (1) 到 (2)) 秒到 x: (隨機取數 (-240) 到 (240)) y: (隨機取數 (-100) 到 (100))
end
  • 障礙物從螢幕的一邊滑到另一邊,像青蛙過河(Frogger)那種遊戲
當收到訊息 [StartCars v]//StartCars 意指「发动车子」
隱藏
x 設為 (240)
重複直到 <(gameOver) = [1]>//gameOver 意指「游戏结束」 
  分身 [自己 v] 建立
  等待 (3) 秒
end

當分身產生
顯示
滑行 (5) 秒到 x: (-240) y: (y 座標)
分身刪除
  • 從天空掉下來的東西
y 設為 (180)
滑行 (1) 秒到 x: (x 座標) y: (-180)
  • 角色走向另一個角色
滑行 (1) 秒到 x: ([x 座標 v] \( [角色2 v] \)) y: ([y 座標 v] \( [角色2 v] \))

滑行()和移動()放在一起比較

下方程式使用移動 () 點讓角色在 8 秒後從左邊緣平滑移動到右側邊緣。

x 設為 (-240)
重複 (80) 次 
  移動 (6) 點
  等待 (0.1) 秒
end

下方程式則是用滑行積木來做到同樣的事。

x 設為 (-240)
滑行 (8) 秒到 x: (240) y: (y 座標)

滑行時帶 Ease Out 效果

滑行積木使用的是純綷的線性補間方法,這意味著角色的運動方式不是 ease in 或是 ease out。Ease Out 是一種運動方式,當對象越接近目標,行進速度就愈慢,這種效果很常被使用,要複製這種在圖形設計中被大量使用的效果也不算難。

當收到訊息 [tween v] //Tween动画是操作某个控件让其展现出旋转、渐变、移动、缩放的这么一种转换过程
重複直到 <<([絕對值 v] of ((target x) - (x座標))) < [.25]> 且 <([絕對值 v] 數值 ((target y) - (y 座標))) < [.25]>> 
  x 改變 (((target x) - (x座標)) / (2))//target 意為目標
  y 改變 (((target y) - (y 座標)) / (2))
end
定位到 x: (target x) y: (target y)

下面的程式是另一種寫法,同樣也可以達到 ease out 的效果,同時它也允許指定要到達想要位置需花費的時間。200 是角色應該滑行到的位置,例子中用的是 X 軸,如果角色需要直向移動,這兩個x 座標積目可以改用y 座標。數字 10 需要計算,指的是到達目標處所花費的秒數乘以 10。

當收到訊息 [tween v]
重複直到 <(四捨五入數值 (x 座標)) = [200]> 
  x 改變 (((200) - (x座標)) / (10))
end

參見