首页 > 网络 > 网络热点

从零开始做一个俄罗斯方块游戏4:形状碰撞检测(上)

常驻编辑 网络热点 2022-08-10 形状   游戏   方块   边界   下落   表格   位置   东西   发生   数据

我是会做游戏也会教你做游戏的小蚂蚁,欢迎关注我,每天学点儿做游戏的知识。vaD拜客生活常识网

嗨!大家好,我是小蚂蚁。vaD拜客生活常识网

今天,我们来继续学习下一个模块:形状碰撞检测vaD拜客生活常识网

vaD拜客生活常识网

在游戏开发中,我们所说的“碰撞”经常指的是物理碰撞,什么是物理碰撞呢?一般的在游戏开发工具中都会包含一个叫做“物理引擎”的东西,它的作用就是在游戏中模拟出现实中的物理效果。例如,我们扔一个东西,这个东西会因为重力而下落,最终落到地上,与地面发生碰撞。在游戏中,我们可以借助物理引擎,来模拟出东西下落掉到地面上的效果。当东西掉到地面上时,我们就说这个东西与地面发生了碰撞vaD拜客生活常识网

但是,在俄罗斯方块这个游戏中,是不需要使用物理引擎的,所以这里的“碰撞”指的并不是物理碰撞,而是通过计算来判断两个方块是否相邻,如果相邻,我们就说它们发生了“碰撞”。vaD拜客生活常识网

在俄罗斯方块游戏中,“碰撞”一共包含下面的这 4 种情况:vaD拜客生活常识网

1.当形状达到最下方一行时,碰撞,形状停靠。vaD拜客生活常识网

2.当形状下落时,任何一个位置碰到下方已有的方块,碰撞,形状停靠。vaD拜客生活常识网

3.当形状向左/右移动时,两侧碰到任何一个已有方块,碰撞,形状不能再向两侧移动。vaD拜客生活常识网

4.当形状切换时,如果新状态碰到任何一个已有方块,碰撞,形状不能切换到新状态。vaD拜客生活常识网

今天这篇文章,我们先了解一下前两种情况。vaD拜客生活常识网

下边界的碰撞

vaD拜客生活常识网

如图,当一个形状达到了最下方的第一行时,它就不能够再继续向下移动了。我们把这种情况叫做“下边界的碰撞”vaD拜客生活常识网

vaD拜客生活常识网

判断起来也很简单,红色圆点代表的是形状当前的位置,由于形状的状态不同,判断是否与下边界发生碰撞的距离也不同,如图,在 1,3 状态下,与下边界的碰撞距离是 1 个方块长度,在 2,4 状态下,与下边界的碰撞距离是1.5 个方块长度。vaD拜客生活常识网

下落的碰撞

接着,来看一下在形状下落的过程中,如何检测是否发生碰撞。vaD拜客生活常识网

vaD拜客生活常识网

如图,下方的红色方块表示的是之前已经摆放的方块,上方的绿色方块是下落的“形状1”,此时,它们应该发生碰撞,绿色的形状应该停止向下移动,摆放在当前的位置上。vaD拜客生活常识网

对于下边界的碰撞来说,由于下边界是固定不变的,所以我们只需要根据当前状态,判断与下边界的距离即可判断碰撞。但是在游戏中,那些已摆放的红色方块的位置是不确定的,这就导致了发生碰撞的情况也是不确定的。vaD拜客生活常识网

vaD拜客生活常识网

如图,所有的情况都会发生“碰撞”。vaD拜客生活常识网

对于这样不确定的情况,该去如何检测碰撞呢?这时,我们就需要用到数据了。vaD拜客生活常识网

vaD拜客生活常识网

如图,右侧的图片是一个数据表格,这个数据表格与左侧的游戏界面是对应的。现在,我们用 0 表示空位置, 1 表示有方块,然后对照着左侧的游戏界面将右侧的表格填满。这样,我们就把当前的游戏抽象成了数据,这个就叫做数据抽象化。(之前专门写了一篇与数据抽象化有关的文章,在这里,基本上所有的消除游戏都离不开它)vaD拜客生活常识网

填充上数据之后,我们再来看一下各种情况的碰撞。vaD拜客生活常识网

vaD拜客生活常识网

试着观察一下碰撞的规律:只要当前形状上的任何一个方块位置的下方是 1 ,那么当前就会发生碰撞。

相关阅读:

  • 纹眉有哪些(纹眉形状)
  • 有哪些杯子(杯子的各种形状及名称)
  • ps如何加粗(如何调ppt的形状线条的粗细)
  • 胚芽是什么(50天胎芽的形状图图片)
  • 怎么剪切图片(照片剪切成各种形状)
  • 我们所看到的星球都是圆的,那宇宙中有没有方形的星球呢
  • 文艺且不落俗的高级感文案
  • 即使是不爱看书的孩子,也会对它情有独钟,这套绘本到底神
  • 缤纷多彩饭团,一招拿下不爱吃饭的小宝宝
  • 馒头最早是由谁发明的?又是什么形状的呢?
    • 网站地图 |
    • 声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不做权威认证,如若验证其真实性,请咨询相关权威专业人士。