新闻列表
咨询热线:
187 - 6397 - 2757
大家好!小云又来了,今天小云老师就带领各位同学们或者同学们的父母们做一个小游戏,在我们90后和80后的年代,我们经常玩一个小游戏就是“超级玛丽”,那可是我们儿时的经典游戏,但是不能光玩呀?
是不是!晃眼间,我们已经都有孩子了,那孩子们玩游戏又怎么办呢?禁止孩子玩游戏吗?如果禁止孩子玩游戏没准会引发孩子的叛逆。
但是小云身为老师为什么还这么说呢?因为小云老师有个更好的注意,就是让孩子学习编程去做游戏,当然作为家长你可能说了,孩子这么小,怎么可能学会呢?
那小云老师说四岁的小同学都能学会,那上小学的同学怎么可能学不会?不信?往下看个视频吧!
我们来看一看四岁小朋友的学习视频吧!
家长担心孩子们真的能听懂课程吗在每节课即将结束的时候我们都会进行课程汇报展示,来看一下小童鞋的汇报成果吧!
这个时候家长可能说了,我们四岁的孩子,年龄辣么小,又不认字,那该如何学习呢?
其实四岁、五岁的孩子不认字怎么学习?只要孩子识别颜色就可以学习。通过颜色识别具体编程积木,比如:蓝色是运动、紫色是外观、黄色是事件等等,通过颜色识别文字,根据颜色先实现出程序做出卡通的效果,以激发孩子兴趣,使孩子产生兴趣后开始具体学习每个积木的作用,再学习积木上面的文字。如下图:
作为家长的你有没有看到我们的小朋友上课呢?现在还在纠结三岁的孩子是否可以学习编程了吗?
看了视频之后,家长们还在担心孩子年龄小学不会吗?
话不说了,接下来我们就试着做个“超级玛丽”游戏吧!
做之前,先想他的关键点在哪里?
1:首先是奔跑的效果。大家简单一想就知道,奔跑肯定不是马里奥在往前跑,而是路在向后跑,实际上马里奥在屏幕上的位置是不变的。很多跑酷游戏都是这样的,通常是背景在动,而不是人物在动。那这个路往后跑怎么实现?
2:这个路是高高低低不断变化的,你用什么办法能实现这种效果呢?
3:这个路是高高低低不断变化的,那你怎么保证马里奥是随着路升高而升高,随着路降低而降低呢?
4:另外游戏要做得精细,那么马里奥奔跑的动作效果就特别重要,用什么方法来实现这个动画效果呢?
马里奥奔跑动作的效果
让我们先从最简单的开始,马里奥奔跑动作的效果很简单,就是用无数个造型循环播放就行了,这个大家应该都知道了。这个游戏里面马里奥一个简单的奔跑用了24个造型,其中每两个连续的造型都是重复的。
通常我们做动画效果都会强调放等待命令,否则程序执行的太快,那么角色的动作可能就变成了快镜头。奔跑的效果的关键是角色的步子的频率要跟路移动的速度一致,这样才能体现出来在路上跑,而不是在路上滑着跑。(好的编程就是对细节的处理)大家可以自己试一下,比如把等待命令放进去,看看这两者的差别。另外如果大家觉得这个角色很好,特别是这几十个造型,也是不容易找到的,想把这个角色拿到自己的程序里用,要怎么做呢?小云老师在这里教初学者一下,很简单,你只要把这个角色导出来,再导入到你自己的游戏里即可。
在角色上点右键,选择导出。然后保存在某个目录里,那么就会有一个后缀为sprite3的文件。然后打开你自己的程序。在角色的图标上选择上传角色就可以了。
所以以后大家看到好的素材,只要有源代码,都可以很简单的导入到你自己的程序里面。
路的实现方法
跑酷的关键就是背景的移动,这里路就相当于背景。路的关键点是两个,一个是不断往后退,一个是出现高高低低的效果。这里面其实有两种方法实现,一种是用屏幕滚动,另一种方法,用角色来克隆实现。就是把路的一部分作为角色,然后不断克隆来组成路,再通过移动来形成背景移动的效果。
这个路的角色有三个造型,一个是水平的路,一个是上升的路,一个是下降的路。这三种路的造型随机组合起来,那么就形成了高高低低不断变化的路。
这段程序大家可以自己读。这里面有两个关键点:
1:第一个就是克隆的频率要和路移动的速度一致,如果不一致,那就乱套了。如何保持一致是关键点。
这就是不同步的效果。
那如何做到呢?我们分析代码,会发现这里面有一个状态变量:LaunchObstacle。这个变量就是一个开关变量,来决定什么时候开始一个克隆。在主程序的循环里面有一个等待命令。这有等待到这个变量的值是YES的时候才会克隆下一个变量。而在克隆启动的子程序里面,我们会看到有一段语句:
也就是克隆出来的变量要先向左边移动15步之后,这个变量才会变成YES。也就是说克隆出来的变量移动开之后才会克隆一个新的克隆体。
通过这个变量和等待命令,就完美的让一条路连贯起来。大家一定要记得这个编程方法哦。很实用的。
2:除了路的克隆频率和运动速度的同步,还有一点很关键,如何让三个造型能够完美衔接,而不是会突然凸起一块和凹陷一块。也就是让路平滑。所以每次克隆体的位置也是不一样的,每次克隆的位置都要根据上一个克隆体的位置决定,如果前面一个克隆体是向上走的造型,那么下一个的起始位置就要向上一些。如果前面是向下走的造型,那么下一个克隆体的起始位置就要向下一些。
大家再看这三个造型的名字,看明白没有?只要你读取了每一个造型的名字,就知道下一个克隆体的起始位置了。是不是很有技巧。虽然不复杂,但是确实很有技巧
好点子比技术更重要
3:另外路的高低要有限制,不能太高也不能太低,虽然用了随机数,但是需要做控制。这个大家自己看程序吧。
马里奥如何在路上跑
如何在路上跑,说的意思是如何保持在路上,而不是跑到空中和路的下面。做这个我们最常见的思路是检测马里奥角色和路之间的碰撞关系。但是之前很多例子我们有讲过,当你做碰撞检测时,如果角色的造型比较复杂,那么碰撞检测往往会出现很多问题。所以对于复杂造型角色的碰撞检测,往往引入形状简单造型的角色专门用来做碰撞检测,然后只要保证让复杂的角色来随时跟随这个简单造型的角色即可。
我们不是引入了一个,而是引入了三个。为什么要引入三个?仔细听!
马里奥的第一个影子角色
这个程序真的是体现了:简单的技巧,好的点子,达到完美效果的一个实例。所以说,以后大家不用太担心自己的编程技巧,把更多的重心放在如何利用你掌握的技巧想出好的点子来实现完美的效果。
马里奥角色代码
这是马里奥角色的代码,非常简单,就是跟紧controller这个角色。也就是说,controller这个角色是关键,用来跟路做互动的角色。而不是马里奥这个角色。然后就是不断切换造型来形成跑步的动画效果。
controller角色代码
这是controller的完整代码,小云老师给你们分析一下。
大家知道,这种影子角色都是来做侦测的,不能让大家看到。但是又不能隐藏,因为角色隐藏之后就无法再做碰撞检测了,那怎么办?这里面有一个技巧就是把透明度设定成100!透明的角色,虽然你看不到,但是角色之间的碰撞检测没有任何问题。
这一段代码是指没有跳跃动作的代码,其中的主循环是一个下降动作的标准代码。Obstacle是路的角色名字。这段代码就是保证角色始终会落到路面上(下落过程是带加速度的)
这段代码是处理收到起跳命令之后的跳跃处理过程。JumpStartPower这个变量是指起跳的初始动能。代码先包括一个起跳过程,然后是一个下降过程。
程序开始就用了#NotJumping这个消息来启动这个影子角色的关键任务,始终保持落在路面上。
然后用了#Jump这个消息来处理起跳和降落的过程。每个消息都有循环过程,那如何让不同的消息导致角色控制不出现相互干扰呢?
小云老师用了这条命令,停止该角色的其他脚本,来确保该角色在起跳后不受其他部分代码的干扰,也就是保证起跳部分代码的独立性。
而在起跳这部分代码完全结束后,再重新广播#NotJumping,来保证原先进程的继续执行。
所以大家可以学习这个技巧,当你一个角色里有多个行动进程的时候,可以用这组命令来进行控制,确保某部分动作或进程的独立性。
大家注意到没有,这个影子角色的代码只做到了让角色始终会落到路上,路水平和路下降都没问题,但是如果当路向上升的时候,怎么让角色也跟着向上升呢?这个影子角色里没有这部分的代码!那如何实现呢?
马里奥的第二个影子角色
小云老师把这三个影子角色的显示特性打开,这样我们就看到了三个影子角色,其中最上面小的那个,就是Riser角色。
这个影子角色的目的是用来让马里奥能够做到随着上坡的路,一起上升的。
Riser的角色代码
代码很简单,就是检测Riser这个变量如果碰到了路的角色Obstacle,然后就发布消息Raiseshadow3。
在第一个影子角色Controller里有对应的接收消息的程序。如果接收到这个消息,就向上移动3步。
问题来了,为什么要增加一个单独的影子角色来判断呢?为什么不用之前那个影子角色来做判断呢?
第一个影子角色的目的是为了让马里奥始终能落在路上。所以这个角色应该是尽量保持在跟路(Obstacle)接触的状态。路向下走,角色自然会落下来。但是如果往上走,那该怎么判断路已经在向上的走呢?第一个影子角色显然就判断不了了。编者另外设计了一个影子角色Riser,然后让这个角色的位置比Controller这个角色高一点,也就是正常来说,这个Riser的角色不会碰到路。会保持在比路高一点的位置。一旦路往上走,那么Riser继续往前走就会碰到路,一旦Riser碰到路,那么马上就知道路向上走了,就发布向上走的消息,通知Controller往上移动三步,如果继续碰到路,说明还在向上走,那么就再移动三步。
是不是很有意思,虽然增加了一个角色,但是编码简单了很多,否则如果只用一个影子角色来做,岂不是要增加无数条代码,和处理更复杂的判断。
小云老师把四个角色,一个马里奥,三个影子角色全部都移动到中心位置。移到中心位置以后,大家就会看到这四个角色的位置关系。所以说,小云老师在布局时就让马里奥的脚底跟Controller的角色的平齐,然后Riser的角色高于Controller角色。(一个简单技巧,当你想调整角色之间的位置关系的时候,就让每个角色移动到正中心,然后再在造型里面把每个角色拖到你想要的位置。)
马里奥的第三个影子角色
最难理解的就是第三个影子角色。CC哥也是想了半天,为什么要用这个角色呢?
Controller2的角色代码
从代码里看,这段代码就是一个功能,控制马里奥起跳的,非常简单,但是为什么单独放一个角色呢?以我们做程序的经验,完全可以把这个角色省略掉,直接把这段程序做到controller里面。
就把这段程序放到controller的主循环里就好了。为什么单独启用这个角色呢?如果小云老师不说你能想到吗?
好了!经过小云老师本节课讲解,各位同学你们听懂了吗?
这个时候,家长们你还认为编程就是给孩子增加一个兴趣吗?
计算机是不是很强大呀!但前提是你要会编程呀!只有会编程,你才能让计算机替你解决问题呀!别担心,编程其实也没有想象那么难!只要你愿意学。
当然,无人机编程就更加深奥,比如我们看下面的视频吧!
无人机能六架一起起飞?没错!那他又和数学有什么关系呢?
小云说啦!这是根据我们数学中的坐标轴的 x轴 y轴 初始化无人机位置,无人机与无人机之间的距离、架数的多少,全部需要通过精密的计算,否则无法编排出理想的造型。
现在作为家长的你!还在纠结无人机编程是否对孩子有帮助吗?
无人机编程能做什么?人脸识别?智能跟随?自动飞行?还有吗?
答案:有!那就是"无人机编舞"!不知道无人机如何编舞?快看下面我们速云小童鞋的无人机编舞吧!!
无人机编程都学习哪些内容呢?
让无人机与编程结合?
没错!就是要让孩子“动手”+“编程”实现无人机起飞。
重点培养孩子逻辑思维能力与动手操作能力,让孩子在编写无人机程序的时,无形的锻炼孩子的逻辑思维能力和前沿科技的运用能力,在飞行学习中,孩子们需了解飞机的机械结构,练习手眼协同能力,甚至自己组装飞行器;在编程中,无人机可以在三维空间中,用摄像头完成巡线、人脸识别等人工智能任务。
例如:人脸识别,智能跟随,红外线定稿,光流定位、无人机编舞等。
看我们小童鞋们上课视频吧
坦克编程都学习哪些内容呢?
动手组装”+“编写程序”
通过编程将抽象理论与实践操作合二为一,让孩子重新理解知识,体验人工智能,培养独立思考的习惯和动手解决问题的能力。
课程涉及机器人拼装、力学等数理知识,运用六类人工智能模块,编写专属的自动驾驶算法程序,让孩子更加深入理解人工智能技术。
例如:人脸识别、智能跟随等前沿技术。