From Test-Scratch-Wiki

Revision as of 14:02, 16 April 2018 by Dnowba (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

滑行 () 秒到 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

参见