00:01
Hello, 各位学弟学妹们好,今天给大家带来一个非常好的一个超级玛的一个游戏啊。那我们我们首先运行看一下这个游戏。我们找到们函数去运行。然后运行之前大家需要看一下信息啊。我们点开始游戏背景音,背景音乐太吵了,那个背景。我们把背景音乐关下啊,出来我们跳远。钓鱼有一个有一个顶的效果。啊,然后这个enemy人的数量刚才是5个,然后这里可以块里有硬的,我们在。这个是一个蘑菇啊,蘑菇接到之后它就变大啊大。
01:00
这边是一个花,就有子弹,我们可以发子弹。这里有一个碰撞效果,碰到会上。嗯。大,然后去点就可以把那个砖块点。然后这个顶不动啊。嗯。我们去这里,还有哪个我们不见了。我们去,去直接打死他,直接打死他。嗯,好。里面有很多砖怪,我就不点,然后我们我们直接碰碰到好,我们碰到这个,这个人就死了啊就。但他生命值,生命值还是8啊,每次碰到就减少一个。
02:05
嗯。进入下一关,这是我配的第二关的第二个。这这块没什么东西啊。就考虑到这个。我死了,我死了算了啊。我们把把条数用完啊。我们重新从这光开始啊,好,就这样个游戏啊。然后我们可以把调试信息这里有个调试信息这里可以关掉。也可以打开,一般都是打开的啊。好,我们看一下这个关卡是怎么配置的。首先它是要配置这个数据库啊。数据库,这个数据库就是一些关卡的一些信息。
03:04
这个首先,首先这里有个六十,六十就是一个关卡,就比如说这里第一关,第二关,如果你再加第三关。你再加第三关,你就去配,配一个第三关。比如说我们加一个。第3关。第三我们背景音乐就播放第一个的背景音乐,然后他的马奥的生命值,生命有多少条数啊,比如说有有三两条吧,然后4的宽度,4的宽度就是你从这个起点。我们按下V进入上上一管,就是从这个起点一直走,一直往后走。然后它这个镜头这个去移动嘛,一直走到最右边到终点,这个宽度就是4°,这里有3000像啊。线索,比如说我这里配置一个。呃,500个像素啊,500像素。
04:00
这是第三关啊,第3关。上面首先我们要配一下地面。这是地面啊。比如说我们第一个是关卡的ID,比如说是第三关啊,刚才说第三关,然后这个地面从哪里开始呢?从零开始。然后它的高度高度的。就是这个地面,它这里有,这是有两行地面,有两行地面,这就啊,这就是。外置。横坐标这里就是Y值啊,然后比如说这里第一个是五百一五,我们就来嘛,多块。比如说有有三十块,三十块。多了我们搞个20块十块吧。我们看一下效果,然后你第三关,第三关的话,它也是从0开始,这是第一行,然后是配第二行。这个这个地面嘛,然后配调嘛,它是五百五百四十五的外置啊,545Y置,它也是十块砖。
05:01
你这样配好之后,你看我们看第三关切到下一关,我们再切到下一关,看到没有4长度从就是从这里一直到这里。这里看到没有,马里奥这个现在是200多的坐标值吗?它刺激长度是多少?这长度是500嘛,把这里就是500的嘛,是去。啊,然后我们把地面也配了嘛,然后我们再配一个这个。S是红,红是什么意思呢?我们看第3关啊。那么我们在这个这个位置啊,就在这个位置位置配一个啊,上面配一个马是60,我们就从60开始,60的坐标值。这里是60嘛,这个上面已经显示调试信息的嘛,这是Y的坐标嘛。然后我们从外资,我们从300开始。
06:00
320吧,320开始。四百二十八四百二十开始。然后他的有两块砖啊,有两块砖,然后他这里砖里面包不包含硬币的。比如说我包含2个硬币。在第一块砖里面有两块硬币。就配好了,是硬币一置我切换。没事,我们计划上一关。嗯。切换上1,然后再切换下。它是在第一块砖有两个硬米啊,第于一块两个硬米没有了块,第二块就是不砖的配置,然后还有个道具配置。道具的,这这就是道具配置嘛,就是配花还是蘑菇。比如说我这里也是第一次第3关啊,第3关。
07:00
XX从哪里开始呢?我们在上面啊,X从从80开始吧,80。Y值刚刚的Y值是420,我们上面的话就是应该是300多啊310。然后这里配有。配两个砖嘛,配两个砖,两个道具砖,然后这里配一个配一个。然后您您就是蘑菇依就是花,我们配个花。我们V进入上一关,然后N切到下一关,看到没有,这个道具砖就出来了,道具砖就出来了,一顶它是换V变大的时候它就大,如果肠变大了,就肠变成子弹了肠。然后就是道具的配置啊,然后还有管道,管道是个啥东西呢?管道就是障碍物。比如说我们PT3啊。X轴,X轴是从这里开始。我配到这里来吧,这里这里来啊,从180开始啊,一百八一百八。
08:04
它是在地面上面嘛。我们就给个450,跟之前一样就行。MV, 然后N切相管,看见没,这管就出来了,这180的位置的位置,这告就是那就走不动了。好,那我们再再配个敌人。敌人的位置。引人的位置啊。我们配第三关啊,第三关XX轴我们从哪里开始呢?我们在这个管道这边的配啊,就从这里吧,就90开始。90开始,然后它的Y值。Y从哪里下来的呢?他再掉的话,它会它会直接掉到这个砖上面来啊。我们我们这里开始吧,从零开始。从10开始,10。然后他就外资,外资我们从200。200的话,它它现在是在它移动速度是2,给它移动速度2,它类型就是普通的就是0啊。
09:07
他现在就是就会从这里从这个200从这里大概从这里掉下来,看到没有。看一下啊,下管上面掉下来了。哎,掉下来了,好,掉下来的就是一个敌人。几人?他会他会到左右。游戏就讲这么多啊。道具的配置啊,还有地面的配置,这些都已经讲了啊。好,然后我们讲一下那个代码的大体实现啊。蛋白量就是主要就是实体这一部分啊,实体这部分比较多。大致的,我们把大致的框架了解就行,了解就非常容易去扩展了,去开发了啊。首先首先有些的话配置数据库啊,你要启动的话,就在这个DB改成你的数据库地址。
10:00
还有账号密码都改成你的。然后执行执行创建这些表就就可以进入启动游戏了啊,这里启动游戏,这里启动游戏,我们首先看这个函数啊,首先它是初始化这个游戏。就是加载的配置啊,这些这些什么细枝末节的我就不讲了,没必要讲。然后我们去去访问一下。所它主要就是初始化一个这个窗口,就是是个什么东西呢。给你富人。就是这个界面,这个界面。那点击开始就进入到那个游戏界面了,游戏界面它其实就是game play里面还有一个有个跟喷了,我们直接从跟喷起,这就是游戏的那个绘图那个界面,它这里有个游戏循环。有个游戏循环啊。这个游戏循环很重要,就是它是时时刻刻都都在执行的啊,时刻都在执行的,只要游戏的运行它就在执行,首先它就是去叫game manager的一个。
11:07
这里啊,Game一个update。的方法,这个的方法就是去跟manage里面是什么呢?它就是保存了所有的我们当前所有游戏的一个体,比如说这里是地面,地面的一个实体,然后砖块有多少,还有道具的砖块。就当前关的啊,海人啊,管道这些这些这些事情。就管管理这些的,然后他就每次循环去调用它update,就是调用所有的实体的update,实体的update里面就是他了些什么呢?就是自己自己。比如说马里奥,马里奥这个。这个这个事情吧。我们update方法,他干了些什么事情?对,阿贝塔。啊,就是。如果是按左键,按右键就代表它是要左移还是右移嘛。
12:04
左移和右移,它这里有一个有一个那个水平的一个垂直垂直加速度。还有处理处理跳跃的。然后还有还有一个更新位置的。这些其实就是处理它的一些。然后XY值变了,马是不是就就开就反回就开始移动了嘛,如果是去重绘的话,它每次会重绘,它就会根据当前的X值和Y值,然后去画它当前的位置嘛,所以说就形成一个动画的效果。啊,大概意思就是这样啊,所有都是这样啊,是新的。然后新update这个数据之后,然后去的就是去重,是实时刻刻去执行。重绘,重绘就是画图。但理解就是画图。你看是怎么画,这个是给这个展体去画逻进行强化。
13:09
那首先这里有一个。你看它首先有一个这个分层的概念,游戏它有个层级。有个成绩。他这里有背景啊这些东西。他为什么要分成呢?就是比如说你这里画了一个马里奥,你又想在这个马里奥上面又画一个东西,把马里奥遮住。就相当于这个地面层嘛。就相当于这个东西,这个东西啊,他现在是在地面的后面,看到没有地面的后面啊,就就理解这个意思,越往上面层级层积就是越大,这个数字就越大,就越顶层的。然后他画的时候。
14:00
他画的时候有个方法的时候,就是按按你刚那个优先级去排,排序之后,然后每一个的去去染。要每一个认证的去渲染它,每个认的就是这个这个几何嘛。这个里面存的这就是个实体,这就是一个每个游戏的一个实体嘛,实体是需要渲染的嘛,所以说就相当于游戏实体嘛,每个每个游戏实体它都都都会实现这里。好,我们继续看方法。首先首先这里是循环,每次都要执行的啊,循环循环执行的,那首先它是把里面的所有对象清空。就是把这个东西先清空啊,我们就理解它里面就有这个东西就行了,首先把它清空,清空之后。然后又加进去。就是通过这个game manager manager里面去获取当前游戏实体的一些东西啊,当前的游戏实体。
15:02
发游戏,然后去加到加到这个这个里面啊,加个manage里面好,就加到就解加到这个里面去了,这个里面去了。这个map里面去了。好加,加了之后,把所有的实体都加进去之后,然后就去调用嘛,刚刚说了嘛,去就去画了啊,就是先排序好,然后再画。然后有那个就画出来了,就画出来了。好,然后这里还有一个画这个生命条数的,这里就是一些信息,还这个camera的概念啊,概念可以详细。Camera就是一个像机,就相当于实现玩家跟的就是你看你在这里,你看面在移动,就跟随这个玩家在移动,这就是camera实现。Camera实现。这个详细我就不讲了,代码也没多少,也很简单。
16:03
然后画图的我们也讲完了啊,我们看一下这个实体是怎么去去更新的啊。比如说我一个敌人被打死了,个敌打死为什么失什么?他消失的话,只能是从这个game manager里面去移除。你看啊。比如说我找到这里面来讲。你你刚刚这里初始化了,有有5个敌人,一个敌人被打死了。我从那个集合里面去移除掉,移除掉之后,然后那边去渲染的时候。这个扩展这里啊,那边去渲的时候,是不是就就这里就加的时候重新取这个的时候是不是就少了一个,所以它就没渲染了。是是这个意思吗?然后你看这个点它是怎么去去移出它自己的,这里有一个。就是就这个阿贝特嘛,就是每循循环去执行的嘛,每次去更新这个敌人,敌人。
17:03
它就会遍历这个集合。如果这集合的is alive这个实体敌人的实体的is alive.是force,所以它就会从这个集合里面去移除掉啊,那自己移除移除掉,自己移除掉之后,它就会不会渲染到那个界面上了。嗯。然后他我什么时候设置的force呢。我们看一下录屏时间啊,好,我们可以讲讲几分钟啊。还可以讲几分钟。就是我们统一有个碰撞检测,碰撞检测。碰撞检测是什么时掉时刻?就是一个碰撞。为什么实时应该检查,就是你这个你跳的时候,你比如说你你撞到东西了,你装的东西它的它就不会减少了,最多这么多了,他就在这里去测了啊。
18:08
这里检测与地面区碰撞。你看它其实就是就是一个一一个这东西里面去。去判断了啊,就就是两个矩形里面有没有交集啊这样判断的。然后这个。这个是从哪个方面啊,从哪个面去去碰撞的地形啊。我们主要是讲那个子弹啊,我们看一下子。检查子弹与敌人的碰撞啊,这个。检测子弹与敌人的方法看一下啊。好。这是子弹与地面啊,子弹与砖块。这不是一体呢,这是。这是检测子弹与。对,在这里啊,是检测那个。
19:01
因为这个子弹很复杂。有这个子弹了吗?你看子弹没有,这个子弹是。它是它是那种曲线的啊,它是那种曲线的,我们看一下啊。你看它这种曲线的嘛,它到地面它会它会弹起来,到会到地面会弹来,所以刚才那么多码。有那些代码,我们主要是看见与几人能不能不。这里首先就是利。这个上所有的敌人所。如果这个敌人是活着的,我们就去检测他的碰撞,然后只检测视野范围内的敌人,是什么意思呢?就是你这个世界很很大的事件嘛,有些敌人还没还没出现在视野里面,你肯定弹发出去,肯定肯定是不会那个吧。
20:03
所以说这里就是有这个判断,好,然后这个这个子弹inst这个就这个子。和这个敌人两个行敌。他的游戏循环,下一次就会把它移移除掉嘛,然后子弹也死了。责任也是就这意思啊。这两两个就就都消失了。就没画出来了。嗯。还有很多有趣有趣的东西啊,还有很多有趣的东西。比如说这是管道,还一个画。我这个花它是一个动画而已,就是等于就就是很多很多,就是一组偏激的图片,一组偏激的图片。他就是通过这这个element的这个这个这个工具类啊,工具类去渲染的。
21:03
就渲染呢,他其实其实就是一组图片一组。胶片的话就这意思。然后我们看一下时间啊,应该好20分钟吧,时间太长了,我就就讲到这里吧。这几个管理器很重要的啊,这几个管理器啊,还有一个声音管理器,声音管理器。就是专门播放声音的,然后用的就是专专门加载图片的。然后还有一个数据库。数据库的对象。数据库在。数据库的这一层。数据库里面的表字体,表实体都是通过呃,Manager过去去加载数据的,然后指定的。将样去出这些数据出来,然后然后去给这个游戏用讲这里吧。
我来说两句