💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
hello,同学们,上节课我们学习了如何在scratch环境下,设置角色的名称和变换角色的大小,大家还记得吗,我们创建了一个叫:『淘淘』的小松鼠是不是,今天我们要学习一下如何计算淘淘的起跳高度和模拟重力加速度的效果,让淘淘从河的这一边跳到那一边,let's go, 我们开始啦 首先,我们看一下这节课要学习的知识点, 动作区:将x坐标增加、将y坐标增加代码块 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttipue8mjj205i01qq2x.jpg) 2、侦测区:碰到颜色代码块 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttiptm8pij204w01s0so.jpg) 我们最终的目标是想让小松鼠跳过河并且不能跳得太远,那样会跳出舞台区,也不能跳得太近,跳得太近就掉到河里了,淘淘跳跃的距离需要精确的计算,我们先来拆解一下我们要解决的三个问题, 1、淘淘跳跃效果实现 2、起跳的位置选择 3、跳跃的距离计算 淘淘所在舞台区的任意一个位置都对应唯一的一个坐标,这个知识点我们前面的课程里已经介绍过了,那么我让淘淘的y坐标增加10次,再让淘淘的y坐标减少10次,这样淘淘是不是就完成了原地跳跃的效果呢,ok,那我们来试一下, 我们先从动作区里找到“将x坐标增加10”的代码块,点击鼠标左键选中,不要松开鼠标左键,这是这个代码块就可以跟随鼠标移动了,我们将这个代码块拖动到左边的脚本区 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttixdcy74j20hc0x4jw1.jpg) 重复上面的操作10次,再从控制区里拖动等待1秒的代码块出来,再拖动“将y坐标增加10”的代码块10次,将这些代码组合在一起,请看下图效果 ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttipu05fuj206m0hagnw.jpg) 大家注意一下,“将y坐标增加10” 这个代码里的10是可以更改的,我们让y坐标增加可以写正数,同理我们想让y坐标减少就可以把这个数字改成负数,所以上面的代码老师把等待后的代码块里的数字改成了负数,让淘淘的y坐标回到初始值, 下面我们来解决第二个问题,什么情况下触发淘淘的起跳条件呢?我们把淘淘移动到这个位置,这时淘淘长长的耳朵碰到了蓝色的河面了, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1ftruv72x68j20kg0h076s.jpg) 我们使用角色![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttiptm8pij204w01s0so.jpg)这个代码块,这个积木块的意思是:如果角色碰到颜色的情况下,需要角色做哪些事情,这是一个条件触发的机制,这里我们使用碰到蓝色河面作为触发淘淘起跳的条件,代码实现是这样的, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttipoheh5j208e040glv.jpg) 鼠标悬停在碰到颜色代码块的绿色框里点击左键,这时鼠标指针会变为小手的状态,移动鼠标位置则这个颜色框里的颜色会跟着鼠标移动而发生变化,我们把鼠标移动到蓝色河面上时,这个颜色框将变为和蓝色河面一样的颜色,点击一下鼠标左键则碰到颜色的条件就设置好了 跳跃的条件设置好了,接下来我们来看一下需要跳跃的距离怎么计算, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttipr0qcyj20rm0nok8d.jpg) 淘淘从起始位置x坐标为4,移动到终点位置x坐标为204,一共移动了200个点,则我们可以这样设计代码,让淘淘在起跳抛物线的前半部分y坐标上升10次,后半部分下降10次相同的值,则y坐标回到原点,淘淘的y坐标每变化一次,x坐标增加10个点,淘淘的y坐标回到原点的时候x坐标增加了20次,则x坐增加了200个点,达到我们预期的效果了,下面来看一下代码实现, ![](https://ws1.sinaimg.cn/large/6bd2803cgy1fttiptf4v8j20hs0lu7j5.jpg) 这里为了模拟重力加速度更加真实,老师在代码里使用了“起跳高度”这个变量,变量的概念和使用我们后面的课程再详细说明,老师的代码里使用到了一个循环语句“重复执行直到触发某一条件再停止”,这个循环的意思是在满足x坐标大于204之前重复执行x坐标增加10和y坐标增加“起跳速度”这个变量的值的动作,起跳速度这个变量的值在不断减小,所以起跳高度就形成了一个抛物线的效果,小朋友们,我们今天的课程结束了,你们理解了吗?