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