游戏积木之碰撞

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

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


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


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


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


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


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


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

640.png

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


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


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

640.png


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

640.png

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


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


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

640.png


选择碰到“蓝色子弹”。

640.png


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

640.png


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

640.png


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


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

640.png


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

640.gif

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


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


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

640.png


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

640.png

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


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

640.png


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


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

640.png


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

640.png


总结一下:


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


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

相关文章
|
2月前
|
开发者
为什么你的游戏做不出来?
为什么你的游戏做不出来?
42 0
|
2月前
俄罗斯方块游戏开发实战教程(3):玩家如何控制形状
俄罗斯方块游戏开发实战教程(3):玩家如何控制形状
43 1
|
2月前
|
数据可视化 开发工具 开发者
羊了个羊游戏开发实战教程(1):堆叠牌的拾取
羊了个羊游戏开发实战教程(1):堆叠牌的拾取
56 0
|
9月前
|
人工智能
多子棋游戏的玩法设计
多子棋游戏的玩法设计
|
开发者
羊了个羊游戏系列教程6:快速拾取
如图,每个图标的拾取之间有一定的时间间隔,这就意味着如果玩家快速的点击图标,这些在时间间隔之内被点击的图标是没有反应的。这是一种很不好的体验,因为玩家需要等待游戏。 对于玩家来讲,自己的操作是不会有问题的,所有的问题都是游戏的问题。我们作为游戏开发者应该尽量避免让玩家遇到这样的情况。所以,这篇教程里,我们就来解决一下这个拾取时间间隔的问题。
109 0
|
数据可视化 开发工具 开发者
你也能做个羊了个羊游戏系列教程1:堆叠牌的拾取
嗨!大家好,我是小蚂蚁。 最近“羊了个羊”小游戏爆火。一下子让想做微信小游戏或者想学做微信小游戏的人多了很多,因为小蚂蚁一直都在长期的写微信小游戏开发的教程,以及制作微信小游戏,所以我无缘无故的也因为这波热度得到了不少的“羊毛”。 不少人建议我写个“羊了个羊”游戏的制作教程,想了一下,为什么不写呢?反正我也是要长期持续写教程的,写别的游戏也是写,那为什么不写写当下如此爆火的游戏呢?羊毛都怼到脸上了,再不薅几把就显得有点儿奇怪了。
101 0
|
数据挖掘 开发者
关于泡泡龙游戏的一点儿总结,以及分享一个好方法
游戏是一种虚拟的产品,它很难被量化,也很难像工厂流水线生产实体产品一样的去生产。因为其中涉及到的情况太多太杂,如何衡量一个游戏的体量?怎样的游戏算是大游戏,怎样的游戏算是小游戏呢?如何判断一个游戏是做完了还是没有做完呢?如何衡量一个游戏开发者的水平呢?……等等等等。这里面的每一个因素都是一个变量,这么多的无法确定的变量合在一起,想要得到一个确定的结果,很显然是不太可能的。
115 0
|
开发者
什么才是“好游戏“?
什么样的游戏才算是一个好游戏呢?其实这是一个很私人的问题,不应该被拿出来当众讨论,就像什么样的电影才是好电影?什么样的书才是好书?什么样的生活才是好生活?什么样的人生才是好人生?...... 这些问题都有着共同的特点,就是因人而异。每个人都有着自己的经历和想法,所以对应的每个问题也都有着自己的答案。
98 0
|
开发工具 开发者
一些与做游戏有关的你想知道的事
我始终认为做游戏是一项技能,游戏创作者制作一个游戏,跟写作者写一篇文章,吉他手弹一首乐曲,糕点师做一个松软的面包,木匠做一套精美的家具都是一样的。对于掌握一项技能来讲,只有一件最重要的事,就是熟练。所以,想学好做游戏唯有不停的练习直至熟练,除此之外,其它的都是弯路。
90 0
游戏积木之克隆
这一节里我们学习一下另一种游戏中常用的积木:克隆。 先回顾一下克隆的概念,就是将一个东西复制出很多份,每一份都是一个“克隆体”,而所有的“克隆体”都与“本体”有着相同的特性。
55 0