游戏开发零基础入门教程(10):游戏积木之碰撞

简介: 顾名思义就是两个物体碰到一起。联系到我们的现实世界,你随手将一个东西扔出去,这个东西最终掉落在地上,就可以说这个东西与地面发生了碰撞。在游戏开发中,我们关注的“碰撞”重点在于发生的那一刻:是谁碰到了谁,碰撞的一方或者被撞的一方又该做出怎样的反应。

这一节我们将学习游戏中最常用的物理行为:碰撞


顾名思义就是两个物体碰到一起。联系到我们的现实世界,你随手将一个东西扔出去,这个东西最终掉落在地上,就可以说这个东西与地面发生了碰撞。在游戏开发中,我们关注的“碰撞”重点在于发生的那一刻:是谁碰到了谁,碰撞的一方或者被撞的一方又该做出怎样的反应。


我们以一个具体的游戏示例进行讲解。


在“打飞机”游戏中,玩家控制的“战机”会发射“子弹”来攻击“敌机”,当“子弹”击中“敌机”时,“敌机”会被击毁。


分析一下其中涉及到碰撞的部分,当“子弹”击中“敌机”时,“子弹”需要与“敌机”发生碰撞。在发生碰撞后,“子弹”需要做的是将自己移除(因为已经打中敌机了,子弹就不应该再从敌机后方穿过去了),“敌机”需要做的是产生爆炸。


接下来,我们要实现一个这样的效果:点击一下战机,战机就会发射一枚子弹,子弹会向上飞行,击中对面的敌机。


首先导入所需的资源,简单布置一下场景。

如图,我们导入了“战机”,“敌机”以及一枚“蓝色子弹”。将“敌机”放置在“战机”的正上方,以便与我们发射的“子弹”可以打中它。


接下来,我们实现“战机”的逻辑:点击后,发射一枚向上飞行的子弹。


在“层级管理”中选中战机,点击“添加事件”,选择“当精灵被点击时”。


接着,添加如下的积木块。

这些积木块做了这样的事情:当战机被点击时,把子弹移动到战机的位置,然后让其一直向上移动。如果无法看懂上述积木块的逻辑,请去复习一下(游戏积木之逻辑)。


接着,添加敌机被子弹击中的逻辑。


在“层级管理”中选中“敌机”,点击添加事件,选择“当精灵发生碰撞”。


选择碰到“蓝色子弹”。


这里,我们简单的使用“隐藏自己”积木块来模拟爆炸。


最后,看起来是这样。当“敌机”碰到“蓝色子弹”后就会隐藏自己。


最后,我们实现一下“子弹碰到敌机”的逻辑。


看上去与敌机的逻辑类似,当“子弹”碰到“敌机”后也是将自己隐藏起来。


点击“预览场景”看一下效果。

点击战机,发射一枚子弹,打中敌机,然后子弹和敌机都消失了。


最后,我们再了解一个新的概念:碰撞轮廓


在“图层管理”中选中“敌机”,然后在“图层属性”中点击“调整碰撞轮廓”按钮。


在“调整碰撞轮廓”的对话框中,可以设置矩形,圆形,多边形的碰撞轮廓。

如图,当前我们选择的是矩形的碰撞轮廓。


如果敌机使用“矩形”碰撞轮廓,在碰撞的时候会发生下面的事情。


如图:如果敌机和子弹的碰撞轮廓都是“矩形”,则它们会在图中的“碰撞位置”处发生碰撞。很明显子弹并没有打中敌机的翅膀,但是敌机已经发生爆炸了,这并不是我们想要的效果。因此,我们需要对敌机的碰撞轮廓进行调整。


打开“调整碰撞轮廓”,选择“多边形”,用鼠标拖拽红色的圆点,调整出适合敌机形状的轮廓。


这样,子弹碰到敌机的翅膀上时,才发生碰撞,才算打中敌机。就比较合理了。


总结一下


我们学习了与碰撞有关的事件和积木,并且使用碰撞实现了一个子弹攻击敌机的例子。另外,我们了解一个新概念“碰撞轮廓


练习一下


试着为“敌机”增加发射子弹的能力,来击中玩家的“战机”。


没有系统性的学习课程和路线?自己学习没氛围学不下去?遇到问题无人帮助即时解答?缺少经验不知该如何前行?......欢迎加入小蚂蚁的游戏开发年度课程,不只是一门课,而是围绕着学习游戏开发有关的一整套服务。帮助你用一年的时间学会做游戏,做出自己的游戏,让游戏为你带来睡后收入。欢迎来跟一百多位同学一起学习做游戏,一起探索游戏的更多可能。【点击这里】了解课程服务详情,【点击这里】可了解小蚂蚁能为你提供的其它课程和服务。

这里是小蚂蚁的部分小游戏,闲暇之余希望能给你带来片刻的放松和愉悦。无需下载安装,点击下方的游戏卡片就可以直接玩啦!










欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识和内容,可以来围观。备注“学习做游戏”可免费领取原创的游戏开发教程资料大合集!非学员只接受付费咨询,不闲聊,望见谅。

相关文章
|
5月前
Libgdx游戏开发(7)——开始游戏界面实现
使用上的注意事项 1. 切换到一个新的Screen的时候,如果之前的Screen不再使用,需要手动调用Screen.dispose方法,进行资源的释放 2. 给Game对象设置Screen的时候,设置的新的那个Screen会调用onShow()方法,而之前的Screen会调用onHide()方法 3. 如果有需要的话,一般在onShow()方法,给当前Screen设置一个输入监听器 优化尝试 - 全局game对象
50 0
|
7月前
泡泡龙游戏开发实战教程(1):泡泡龙游戏的布局
泡泡龙游戏开发实战教程(1):泡泡龙游戏的布局
92 0
|
7月前
泡泡龙游戏开发实战教程(7):先移动还是先计算
泡泡龙游戏开发实战教程(7):先移动还是先计算
78 0
游戏开发零基础入门教程(11):游戏积木之动画
让我们直接从示例开始,上一节中我们让“战机”发射子弹,击中“敌机”,然后敌机直接隐藏。这个过程过于粗糙,在真实的游戏中,敌机被击中后往往会伴随着爆炸动画以及音效。
89 0
游戏开发零基础入门教程(8):游戏积木之逻辑
“如果,那么”的逻辑非常的直白,如果玩家死了,那么游戏就应该结束。反之,如果玩家没有死,那么游戏就不应该结束。如果我干掉了一个敌人,那么我的得分就应该加一。如果敌人被子弹打中了,那么它就应该爆炸......
115 0
游戏开发零基础入门教程(9):游戏积木之克隆
这一节里我们学习一下另一种游戏中常用的积木:克隆。 先回顾一下克隆的概念,就是将一个东西复制出很多份,每一份都是一个“克隆体”,而所有的“克隆体”都与“本体”有着相同的特性。 在“打飞机”的游戏中,需要有许许多多的敌机不停的从屏幕上方落下来。 我们就使用“克隆”来实现这个功能,通过“克隆”敌机,来产生无穷无尽的敌机。 首先,导入“背景”和“敌机”素材,布置一下场景。
79 0
|
开发工具
游戏开发零基础入门教程系列:人人都能做游戏
你正在阅读的是我原创的游戏开发零基础入门教程系列,面向的是没人任何游戏开发和编程经验,想要学习自己做游戏的普通人。这个系列教程已经帮助了很多人做出了自己人生的第一个游戏,希望它也能帮助到你。
408 0
游戏开发零基础入门教程(1):先对游戏有个概念
首先回答第一个问题,是的,学完这个教程后,你能够做出自己的游戏。这里,有一点儿地方需要澄清一下,“做出来”跟“能够做出来”是完全不同的,“做出来”是既定的事实,去做了,并且做出来了。而“能够做出来”只是一种想象,前提是要先“去做”。
268 0
游戏开发零基础入门教程(14):把游戏分享给朋友们
你的第一个小游戏已经完成了,现在是时候把它分享给朋友们了。无需担心它看起来怎样,是否太过简单或者粗糙。总之它是你的第一个游戏作品,你值得为之高兴,也值得将这快乐分享出去。
129 0
|
开发者
从零开始制作一个俄罗斯方块游戏
小蚂蚁的游戏目前已经上线,主要面向的是有一定基础的同学。从零开始制作一个经典的俄罗斯方块游戏,理论结合实战,帮助你进一步提升做游戏的技能。
155 0
下一篇
DataWorks