粉丝152获赞454

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

在怪剧中呢,如果需要给一个角色调节方向的话啊,我们可以在运动分类中呢,找到一个模块,就是这个面向方向的模块,我们把它拖出来,这上面写着面向九十度的方向,那我点击一下, 这个时候小猫面向右边,也就是我们所说的九十度的方向,那怎么样理解这个度数和方向的关系呢?我们可以点击一下这个数字, 我们看到这里有一个圆,我们首先要知道一个圆是分成三百六十度的,那他的零度是在哪里呢?也就是这个圆的起点是在哪里呢? 哎,我们可以动一下这个箭头,一到最上方,我们看到这时候显示是零,也就是说这就是这个圆的零度啊,也就 是我们指向上方的方向,然后我们可以一直顺时针的移动这个箭头啊,我们可以看到这是三十度的方向, 然后四十五度的方向,他每移动一格呢,是增加十五度,然后我们移动到啊这个九十度的方向,也就是我们屏幕上右边的方向,然后我们接着移动到最下方,就是一百八十度的方向, 也就是我们这个角色向下的方向,然后我们继续移动,然后我们看到这边是写的是负九十度, 这个时候我们已经到了这个圆的负数部分了,呃,左边的这半圆呢是负数,所以我们看到向左的方向呢,就是负九十度,然后我们继续移动,就会回到我们的起点,就是零 度的方向,也就是向上的方向。那对于我们制作游戏来说呢,我们主要用到的四个方向就是上下 左右啊,分别对应的就是零度、一百八十度。呃,九十度和负九十度,你学会了吗?

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


零基础上分钟学会这个小猫跨越障碍物的游戏制作,我们使用的是少儿编程,是 k 曲做开发,有兴趣的小朋友可以跟我一起学。 我们先把开发流程梳理一下,根据流程做开发。第一步,先上背景啊,还有角色, 那就是小猫跟树,好,把那个位置给它调整一下,还有大小也控制一下,猫树的大小也需要控制一下 拖拽这个绿旗,这个绿旗呢相当于启动开关啊,我们把绿旗那个代码放大一点,大家能看得清楚一点啊。初始化 一下小数的七字位置,通过重复执行移动,然后让小数能够向左移动起来,这个地方要填一个复数,然后小数小数就能向左移动了 啊,这里有一个逻辑的条件判断,就是说小树碰到边缘之后,呃,他要缓回原始的位置,哎,对,然后就碰到小树,这样小树之后我们要给他一个位置再拿回去啊,我们试一下这个效果,可以了。 第三步,通过键盘控制小猫的跳跃,那这里前几步跟数字一样的也需要一个初始化,那么这 一个地方我们需要有一个键盘的输入,通过键盘的输入,然后来控制小猫。小猫这个 跳跃的这个功能我专门做一个说明一下,它是通过控制是呃,小猫位置的外坐标来控制跳跃, y 的坐标 变大,他就往上,外的坐标变小,哦,那个他就往下掉落啊,我们看一下这个字啊,写的这样吧,然后试一下效果,哎,对,然后可以了,我们把这张代码拼接在那个按空格键的那代码下面,然后可以了, 现在做第四步,小猫跟树碰撞,然后结束游戏。那这里呢有一个逻辑条件判断,还有侦测,侦测那个小猫跟树进行碰撞,那么这段代码呢,可以写在小猫身上,也可以小树身上,那么我目前选择的是 在小树身上。第五步,小猫的分数,我们这边需要加一个参数记录小猫的分数,然后呢我们这一个位置需要先把三分数设置为零, 初始化非设置为零。然后我们对分数的判断逻辑是当树碰到了墙壁之后, 那么我们给他加一分,好全部都写完了,然后我们最后的时候,然后测试一下这个效果。 ok, 没有问题。觉得我这个讲的有用的,麻烦点赞、收藏、转发,谢谢大家。

贪吃蛇小游戏用 sqlag 如何制作呢?分解游戏分为三个步骤,第一步,我们用上下左右键控制蛇的移动,第二步,让苹果随机出现的舞台上。第三步,当蛇吃到苹果的时候,让积分增加,并且让蛇声变长。上传两个角色, 一个小球和一个苹果。我们用小球做一个贪吃蛇的蛇头, 当小驴骑被点击的时候,我们让舌头来到初始为止,让舌头不断移动。当向右的箭头按下时,让小球面向九十度, 同样的方式设置其他三个方向键。 当贪吃蛇碰到舞台边缘的时候,游戏结束。 当小瑞奇被点击的时候,我们让舌头不断的克隆自己,给自己一个蛇身的效果。当克隆体启动时,我们让他等待一段时间之后删除自己。 新建一个积分变量,用它来控制舌的长度,让积分乘以零点一,再给他一个初始值。 当小刘奇被点击的时候,我们先克隆二十个苹果,接下来每隔零点三秒克隆一个。当克隆体被点击的时候,我们让他来到一个随机位置, 设置它的大小在二十到四十之间,并且让它显示出来。当贪吃蛇放到苹果的时候,我们让积分增加,苹果的大小不同,我们也换上一下它的积分, 我们用大小除以二十,再做一个四舍五入之后删除子科隆体,我们再给积分设置一个初始值为零。这样贪吃蛇的游戏就制作完成了,小朋友们赶快动手试试吧!关注我,一起学习,一起成长!