粉丝8获赞23

大家好,我是赵老师,在这个视频里我给大家演示一下如何让此怪事角色不穿过一个障碍物。我们看我们这个例子,先看一下 这个小猫呢,从左往右走,然后碰到一个建筑,这是一个建筑,然后他就不走过去了,不穿过去了,这个是怎么实现的呢?我这就给大家看一下。 我们打开这个 scratch idit, 就是 scratch 编辑器,然后里面有两个角色,一个是小猫的角色,一个是 building, 这两个角色选择小猫,在这里还有这个 建筑物,这个 buildings, 对吧?这个角色,然后背景你随机选一个,选哪个都可以, 如果你要是想看这个尺寸的话,就选择 sy grade, 这是最好,这个有这个死怪值啊。 stage, 这是舞台的尺寸,负二百四,正二百四,坐标值 x y 是负一百八到正一百八, 那么还选这个背景吧,那我们看这个标景是不需要编内码的,我们只需要对这个小猫角色编内码,那么看他怎么编的呢?当绿旗被点击,先面向九十路方向,也就是小黄猫要面向这个建筑物的方向, 面向九十度方向,在这里面向方向,在这个运动里面啊,一道负二百,负一百五,一道在这个积木,负二百负一百五。那你看我们这个背景,刚才我们不是选了两个吗? 这个负二百,负一百五呢,也就是负二百,因为这个 x 坐标最左边是负二百四,所以不要到最左边外坐标最下边是负一百八,所以不要最下边要负一百五,大概就这个位置 那么比较好。好,然后 将大小设为五十,也就是百分之五十,他这个猫太大了,我给他设小一点宠物执行,因为他要向着这个建筑物走,所以就一直宠物执行移动 移动舞步下一个造型。这个小猫有两个造型,这两个造型循环交替,就感觉他好像在走路,对吧?所以这重复执行里边移动舞步下一个造型就是他一直在走的这个效果, 对吧?然后如果碰到 buildings, 那在哪呢?如果在这里边控制,如果,那么拖过来,碰到 buildings 是一个侦测的, 这个积木画在侦测里庞大,拉过来 beautils, beautils 就是这个角色的名称,角色的名称,对吧? 就怎么办呢?播放声音,喵,在这个声音里边播放声音,喵,等待一秒再移动复制。移动复制步就是往往左走十步, 但是他就不往前走了,对吧?也就碰到这个建筑物,他叫一声,然后等待一秒移动复试。那为什么要等待一秒呢?我们先看一下,运行一下,这是等待一秒的,如果我们不要等待一秒, 对吧?这个声音没播放完就又从无止境,又下一次播放声音了,就错了。如果我们不要移动复制部,你看会怎么样? 他就穿过去了,对吧?正是因为他碰到了移动复制部,他才被这个建筑物所拦住,穿不过去,对吧?等待一秒啊! 如果你嫌等待一秒太长,也可以改成小一点零点五秒,对吧?啊,这个就是这期的视频啊,请最后请大家点个赞,关个注,下次想看不迷路,再见。

大家好,本次介绍一下这种跳跃躲避障碍物游戏的制作,当然本次还是使用少儿编程软件四块二式,感兴趣的小朋友可以跟我一起做。首先分析分解一下这种游戏,要完成这种游戏 需要完成以下几个步骤,第一,让角色上下跳跃起来,第二,让障碍物左右移动起来。 第三,当角色碰到障碍物后,游戏停止,最后再加一个得分功能就可以了。接下来我来演示一下如何制作这种游戏。 首先选择一下角色,这里选择小鸡作为游戏的 主角,他需要完成上下跳动的动作,然后再选择一下鸡蛋这个角色, 他作为障碍物,他需要左右移动起来。 然后再选择一个简单的背景,首先要让小鸡上下跳跃起来,如果看了我前面的视频,应该知道让角色上下跳跃就是改变他的歪轴坐标, 这里让外轴增加时就是向上运动,让外轴增加腹直,比如说增加腹时就是让他向下运动,这样上下 运动结合起来就可以实现跳跃的动作。这里让歪轴增加时重复十次,歪轴增加负时也重复十次,这样执行一下就可以看到小鸡跳跃起来了。 这里在跳跃的同时可以增加一个音效,音效的使用播放声音这个模块, 这样在他跳跃的时候就有音效了,这里播放的声音可以在声音这个标签下看到。 那么我们如何控制小鸡跳跃呢?这里我们使用当按下空格键时这个模块来控制小鸡跳跃,这样的话我 点击键盘的空格键,小鸡就跳跃了。当然我们还可以选择别的按键。小鸡跳跃的功能实现之后,就需要让鸡蛋作为障碍物左右移动起来了, 这里使用在几秒内平滑移动到固定坐标位置这个模块,我们知道 x 轴最左边是负了二百四十,这里我们输入负二百四十,观察一下效果, 这样鸡蛋就从右向左开始移动了。大家注意看一下,当我移动鸡蛋的时候,代码块里的 f 轴歪轴也是跟着变化的, 我们需要将鸡蛋从舞台的最右侧开始滑动,就把它移动到最右侧,此时带马块的作 也发生了变化,我们把一道固定位置这个代码块放过来,再把鸡蛋放到最左侧,这里的坐标值也跟着变化了。 我们将这两个模块叠加起来观察一下效果,这样就可以看到鸡蛋首先移到最右侧,然后在一秒内滑行到最左侧,在一秒内滑行到最左侧,时间有点快了,这里我们把它改为三秒, 再让这两个模块一直重复执行, 这样鸡蛋就不断的从最右侧往最左侧开始移动了,就实现了鸡蛋从右向左移 移动的效果了。接下来再实现第三个功能,当小鸡跳跃碰到鸡蛋时,游戏停止,小鸡碰到鸡蛋跟鸡蛋碰到小鸡是相互的,这里我们再加入一个等待的模块,需要等待什么呢? 鸡蛋等待碰到小鸡碰到小鸡之后,停止全部脚本。这两个模块的意思就是鸡蛋一直在不停的从右向左移动,直到碰到小鸡全部脚本停止,也就是游戏停止 来运行一下,我们观察一下 看鸡蛋碰到小鸡,游戏就停止了, 此时我们可能会碰到这样一种情况,小鸡跟鸡蛋碰撞在一起的时候,小鸡正好在高空中,这样如果再点击运行的话,小鸡还在高空中了。 此时我们需要在刚开始给小鸡加入一个初始的位置,大家可以看到此时模块的坐标跟舞台上小鸡的坐标是一致的, 点击运行时,小鸡移动到初始为止,这样的话就可以了, 比如说还是在这个位置碰撞,我们再次点击运行,这样小鸡就有一个初始位置了。这个 游戏的功能基本实现,大家是不是感觉一个鸡蛋障碍物有点太少了,此时我们可以再复制一个鸡蛋 作为另一个障碍物,如果点击运行的话,还是只是看到了一个障碍物,这是为什么呢?因为这两个鸡蛋是重合在一起了, 如何让他们不重合呢?这里我们让鸡蛋二等待一会再开始滑行就可以了,比如说这里增加一个等待一秒, 这样运行,再看一下效果,这样就出现了两个有间隔的鸡蛋了。大家有没有发现一个问题, 在刚开始运行的时候,是有一个不动的鸡蛋的,这是为什么呢?因为鸡蛋二此时 在等待,他是在固定位置,如何消除这个不合适的现象呢?只需要让鸡蛋二在这等待了一秒内不显示就可以了,在刚开始的时候隐藏等待一秒之后再显示, 这样就可以了。好了,最后还可以增加一个得分的功能,这里增加一个变量,把它叫做得分。在程序的开始,同样的需要将得分设置为零, 小鸡每成功跳跃一次,得分加一,这样得分功能就能实现了,我们看一下效果好了,这个这个游戏就完成了。 观看了本视频,如果感觉有所收获,还请您点赞转发一下。最近我在更新少儿编程画日相关的内容, 如果家里的小朋友感兴趣,可以跟我一起学习死跨市。好了,本次视频就到这了,关注我,一起学习,一起进步,谢谢观看!

各位朋友好,身比马良系列的第四期,今天来介绍一下实现碰撞侦测的三种方法。原本我只想到了两种啊,就是克隆体哨兵的方法和数据结合的方法,后来评论区里有人给出了另外的方法,而且是在 b 站,和抖音不约而同, 就是在绘制的时候呢,直接进行碰撞侦测。我觉得很有道理啊,所以把这个单点循环的方法也实现了一下。先说一个准备工作,就是关于数据点采集的密度问题,因为移动鼠标的过程中速度是不均匀的,所以导致采集到列表里的数据呢,既有重复又有终端 能看到啊,这里有明显的中断区域,这样的数据情况会影响到侦测方法的准确度,明明这个位置有造型啊,但是数据不体现,那侦测就会漏掉。所以我开发了两个自制积木,去除重复和补点,对数据点作为一个清洗和优化。这个不是今天重点,我就不详细介绍细节了, 反正代码会发出来,如果你自己写的话,千万不要把中断点列表给忘了,要同步调整。现在看第一种侦测方法,克隆体哨兵。原理很简单,就是我给每一个点都设置一个克隆体,给他们设置上 id 值,同时建了一个列表,存放每个克隆体对应的碰撞侦测结果。 列表里只要有一个位置碰到,侦测结果为一,那么就可以认为我们手绘的角色发生了碰撞。具体代码层面,哨兵促使化积木作用是串联克隆体 id 变量呢,是仅对当前角色有效,这样每个克隆体都有自己独立的 id, 刚好跟数据点列表里的序号对应起来。存放侦测结果的列表呢, 有两个,一个是碰到边缘的列表,一个是碰到决赛二的列表。作为克隆体启动后,核心是从不执行移到自己 id 对应的位置上去。这里的移动代码呢,跟绘制是一样的,直接复制过来,只是把列 列表序号换成了 id 变量,然后做侦测的判断,并且修改列表中对应的结果。一个小细节,为了避免克隆体自身的造型影响美观,我把他的虚向特效设成一百,这样既能正常碰撞,同时还看不见克隆体。 侦测碰撞题目就干一个事,看碰撞结果列表里是否包含一,包含了说明碰撞成功,然后修改碰到边缘变量和碰到九十二变量,因为我们最终要使用的是这两个变量。每次绘制之后都要调用这个侦测碰撞题目啊,来获得最新的碰撞情况。 接下来就是用碰撞真正的结果了,想怎么用都行。我这里呢是用在运动控制的地方,如果碰到了就往反方向开倒车直到分离开。这个方法呢是比较直观好理解的,而且列表里可以留下碰撞位置的细节,这对后续开发物理引擎应该 是有帮助的。但是克隆体的数量有限,如果游戏自定义角色很多就不适合了。第二种方法是粉丝们提出的直接在混日的时候做碰撞侦测, 因为用来绘制的角色呢,是沿着轨迹高速循环移动的,只要足够快,是可以保证侦测准确度的。这种方法实现起来非常简单,直接在绘制节目里加上碰到侦测代码,然后根据结果修改代码就好了, 不需要建立列表。但是他也有缺点啊,碰撞边缘,碰撞小猫这种原生角色都没问题,可如果有两个自定义角色之间的碰撞就有问题了, 两边都是单点高速循环,只有两个单点碰到一起的时候才能成功判断碰撞,但是这个几率恐怕要小得多啊。当然这只是我的理论分析,没有实际验证,感兴趣的可以自己验证一下,看是不是这个情况。最后一种方法,我做的是点击是否有交集的判断,先看 看下效果,点击滤镜之后,绘制第一个角色,按下空格,第一个角色完成,开始绘制第二个角色,再按空格,第二个角色完成,第三次按下空格。两个自定义角色都可以运动,这里我一个用上下左右键控制,一个用 wsad 控制。碰到边缘是可以识别的,彼此碰撞也是可以识别的。 原理概括起来就一句话,判断这两个自定义角色是否在舞台上占据了同一个点,因为他们在舞台上无论是移动还是禁止,每一个点的位置我们都是可以获得。但是为了方便进行两边点击的比较啊,做了一点处理。 原本是用两个列表分别记录 x 和 y, 那现在我要合并成一个表,这样更方便比较。我把舞台看作是由两千七百个八乘八的小格子拼出来的,从左上角到右下角,给格子顺序编号从一到两千七, 这样舞台上的每一个坐标都有自己对应的格子编号。在绘制代码里增加这些内容,把移动后的坐标位置对应的格子编号给他求出来,加入新建立的这个点击列表里。两个角色都这样做,这就是他们各自占据舞台上格子的编号集合。 真实代码很好写,便利决策一的点击列表啊。检查每个点是否在对方的点击中存在,只要有一个存在,就是碰撞成功。 舞台边缘这一圈对应的格子给他也建立起一个点击列表,这样舞台边缘的碰撞就可以实现了。这个方法完全不用克隆体,同时可以实现自定义决策之间的碰撞政策。 缺点是不能识别原声角色的碰撞,除非你把原声角色的点击也建立起来。代码叠叠到这一步,回头去看,会发现其实有很多不同的方法来实现相同的目标。比如我们的列表 表里到底用什么形式来存储?最初是直接存 xy 坐标,后来是存储相对于基准点的坐标差值。我还尝试过存储与基准点的距离和角度, 现在又出现了舞台格子的序列编号。随着对一件事物探索的深入,我们会不断产生新的认知,不断总结和改变自己的方法。这个世界也许不是神明用程序渲染的,但是他的确符合螺旋迭带的开发规律。

今天和大家来一起来做一款横版游戏,这款游戏呢最主要呢就是你要学会如何是设计这一个陷阱啊,当你做好了这个游戏,你拿去给你朋友玩的时候,我觉得你看着他玩一定很快乐,因为 别人玩的时候几乎很难过得去,除非他是一个身法点满,身法点满的人。哎呀,身法点满啊,终于能过第一个第一次了啊,你以为第二个第一次会不会跳起来?会啊,哎呀 好,你碰到第一个苹果的时候发现没事啊,但是第二个苹果呢?哎,其实它是有坑的,生法生法,哎,它会掉下来砸你啊,但是呢它只会掉一次, 其实他能掉多少次,其实是可以编的啊。哎呀,第一节课我们先来讲讲一些最基础的操作啊,我们先让我们的主角给动起来啊,我们就用这一只小猫吧,啊,给他改个名字啊,叫他猫大哥吧。 好,猫大哥呢,好像有点大啊,我想一个屏幕做的小的话,我先把它的大小先控制一下, 把它大小弄小一点,例如把大小设为三十五 啊,小一点吧。啊,就这样啊,我们设置完大小之后呢,我们把它的出生点给处理一下,出生点就在这里吧啊,出生点我们把它固定一下,这里有个小技巧啊,你想移动 到什么位置,想要那个坐标的话,你把游戏先暂停,然后呢?把角色拖拉到你想要的地方,然后这个时候我们运动里面的这个移动到 x 和 y 多少,这个坐标就是当前的坐标了, 无论我们移动到什么时候,我们只要一开始他就会到这个位置上面来。好,这就是一个小技巧。好,这是他的出词点,出词点之后呢,我们另外开一个自然段啊,用来 控制他的左右移动啊,因为他的不停的判断呢,我们来一个重复执行啊。重复执行里面写什么呢?那就写如果,那么如果我按下左键啊,政策里面按下左键,按下左键 我就让他面向左面啊,先转个面向,转了面向,然后开始移动。 好,移动五步吧。嗯,移动,为了,呃,好看一点,我们在移动的时候我们给他换一下一个造型。好,这就是向左。好,那我们复制一下, 一个是向右的啊,把这个改成右,把方向改成右就可以了。好,这就是一个左,一个右,我们放到重复执行里面。好,我们来看看现在的情况。右,左,哎,出事了,左边倒过来了啊,左边倒过来是因为我们在他基础属性这一块 没有给他定义一个东西,就是我们的运动里面有一个旋转方式,设为左右翻转。好,有了这个东 东西他就不会把它倒过来了,他就向左,向右,哈,这就是我们的左右移动。好,下一节课我们将要讲他最重要的一个步骤,跳跃。那这节课先讲到这里。