教学原文参考:反弹球 ( 乒乓球 )
这篇文章会介绍,如何在 Scratch 3 里使用定位、侦测碰到、反弹、数学计算、重复...等积木,实作一个反弹球 ( 类似乒乓球 ) 的小游戏,并且更进一步做到板子以不同速度碰撞到乒乓球时,会改变乒乓球的移动轨迹和角度。
在角色编辑区,删除猫咪角色,使用绘画,绘制球、板子和地板三个新角色 ( 参考:造型与绘图 )。
下图是三个造型在舞台上排列的大小示意,地板占满整个舞台底部 ( 因为到时候如果球碰到地板,表示扣分或游戏结束 )。
点击「球」角色,先编辑让球「碰到边缘就反弹」的程序:
完成後点击绿旗,就能看到球在舞台中移动,撞到边缘会反弹。
接着理解「球碰板子反弹」的原理:
按照反弹原理,编辑球碰到板子的程序:
完成後,就能看到球碰到板子反弹。
由於球是以每次移动「 10 点」为单位进行移动,所以某些情况下,会发生「超过板子」的奇怪状况。
为了避免这种状况,可以建立一个「反弹修正」的函式处理,点选左侧清单「函式积木」,建立一个函式,命名为「反弹修正」,勾选「执行完毕再更新画面」。
注意,一定要勾选「执行完毕再更新画面」,这个功能可以让函式内不需要等待的程序快速执行,加快画面运行速度。
「反弹修正」函式的内容,放入一个「重复...直到」积木,每次重复将球的 y 增加 1,直到没有碰到板子为止 (碰到板子不成立 ),接着在原本的程序中「如果碰到板子」的积木里,执行「反弹修正」的函式。
最後加入「如果...那麽...否则」积木,判断如果碰到地板,就说出「你已经死了」,否则 ( 如果没碰到地板 ),就执行球的移动与碰撞程序。
编辑「板子」角色的程序,让板子可以跟随滑鼠移动:
虽然做到这个步骤,程序已经全部完成,但球只会以「单一角度」反弹或移动,因此可以替板子角色加入「速度」变数,由板子的移动快慢,进一步控制球的反弹角度。
首先新增两个变数:
修改板子的跟随滑鼠移动的程序,每次重复执行:
此处的速度 v 表示 0.001 秒内滑鼠移动的「距离」,0.001 秒内移动距离越大,速度越快。
最後,点击「球」的角色,将变数 v 加入角度的计算里。
完成後,点击绿旗,就能开始进行反弹球的游戏,当板子移动速度越快,就越能改变球的反弹角度。
范例解答:反弹球 ( 乒乓球 )
如果已经熟悉了反弹球 ( 乒乓球 )的原理,还可以尝试更多好玩的作法:
大家好,我是 OXXO,是个即将迈入中年的斜杠青年,如果对我有点兴趣(笑,可以与我联系,一起来做点有玩又有创意的东西吧!
<<: [从0到1] C#小乳牛 练成基础程序逻辑 Day 25 - String操纵术II
>>: 【在 iOS 开发路上的大小事-Day28】透过 Firebase 来管理资料 (Cloud Firestore 篇) Part2
前言: 接下来要来完成我们网站的导览部分了,这里阿森主要分为两个大项目,分别是Navbar和Sid...
A.14 系统获取、开发及维护 A.14.1 资讯系统之安全要求事项 目标:确保资讯安全系跨越整个生...
前言 你使用过Prototype,那你知道它可以被污染吗? 正文 概念 Javascript的物件透...
什麽是 Pipe? Pipe 经常被用来处理使用者传入的参数,比如:验证参数的正确性、型别的转换等。...
上一篇我们把计数器Component完成了,这篇要来写这个计数器的测试了! 首先我们要先建立一个属於...