8. 自动驾驶¶
8.1. 教程介绍¶
8.2. 编程目标¶
那我们的Arcade游戏,在哪里可以设计地图呢?😕
📌积木块位置:场景工具箱-》设置图块地图为
点开灰色方块,来介绍一下编辑器内的使用工具以及使用方法:👇
地图由一个个的图块绘制而成,素材库(Gallery)里有丰富的图块,下拉框可以选择:👇
点击左右箭头可以看到一个系列里更丰富的图块素材:👇
当然作为一个灵感爆棚的设计师,点击My Tiles,我们也可以自己来设计图块:👇
点击My Tiles后面的加号,你可以新建一个图块进行编辑设计(图块大小为16*16):👇
如果两个图块相差不大,我们可以选择复制图块,然后稍作修改就是一个新的图块了。👇
修改长宽的值,我们发现,最大的值为512*512(图块)。👇
那这么大的地图,相当于多少个模拟器屏幕大小呢?
屏幕大小是160*120, 图块大小是16*16, 相当于一个屏幕大概能显示10*7.5(约为8)个图块。👇
综合以上,我们总结一下:
图块大小T:16*16(像素)
屏幕大小S:160*120(像素)
地图大小M:512*512(图块)-》8192*8192(像素)
介绍完地图后,我们就开始今天的项目吧。
8.3. 设计地图¶
8.4. 创建汽车精灵¶
📌积木块位置:场景工具箱中-》放置精灵到随机位置的某个图块上:
📌积木块位置:场景工具箱-》镜头跟随精灵移动积木块。
将“镜头跟随精灵mySprite移动”积木块放置到“当开机时”事件内部。这样,汽车走到哪里,我们的游戏视角就跟到哪里,操作一下试试看!
接下来是汽车开到了草地上的问题,这个是很危险的事情,我们要避免这样的情况。
打开地图编辑器,有一个画墙的图标,图块加上这个图标之后,就可以有墙的属性,正常的精灵是不可以穿过墙的。👇
我们给草地图块都加上墙的属性:编辑器上可以看到草地上有了一层红色的覆盖层,这个就代表着有了墙的属性(只是一种属性,模拟器屏幕中不会显示这个红色覆盖)。👇
TIPS:编辑器右上角有一个show walls的开关,开关关掉之后,你在编辑器中就看不到这一层红色覆盖了(墙的属性依旧在)。但是在绘制过程中,建议大家打开开关。
当然有同学会说,要全部一个个画上墙,要是我的地图很大的话,也太花时间了吧。不用担心,在后面的数组相关课程中,我们会介绍到如何用更方便的方法来画墙,不需要手动画,用程序就能实现。✌
好了,现在在模拟器上试一下,我们的汽车是不是可以在整个地图上跑起来了,并且只在道路上跑。
8.5. 自动驾驶¶
接下来我们就要开始做自动驾驶的功能了。
首先,我们给汽车一个初始的速度。👇
怎么做到自动驾驶?😕
也就是说汽车可以看着交通指示来驾驶。比如看到”左转” “右转” “前进” “倒退” “停车”这些指示,可以做出正确的对应的动作。
我们先来绘制一下我们需要用到的交通指示图块:👇
根据现在的道路,在路口放置对应的指示牌:👇
如何做到汽车识别到对应的指示牌呢?😕
在汽车驾驶到对应的路口的时候,其实会和方向指示牌图块重叠,我们可以使用场景工具箱-》精灵与图块重叠积木块来实现这个效果。👇
在第一个路口,看到指示牌后,我们给汽车设置该行驶方向的一个速度,这样汽车就能改变行驶方向继续驾驶。👇
同理,我们对其他的指示牌也做相应的处理:👇
试一下,现在我们的汽车是否可以做到自动驾驶?😕
可能大家会发现一个问题,汽车在行驶到一些路口的时候,停了下来。这是为什么呢?👇
因为我们在手动驾驶的时候,给草地加上了墙的属性。但是自动驾驶的时候,汽车与交通指示图块重叠,可能会有一小部分汽车的位置是超过了当时的图块位置,所以遇到前方的有墙属性的草地之后,汽车被挡住了。
在自动驾驶的时候,我们道路周围的草地可以不加墙的属性,使用橡皮擦工具擦除草地墙的属性。
这样,我们自动驾驶的功能就实现了。
不过还有一个不太合理的地方:汽车改变驾驶方向后,汽车的方向没有变化。
8.6. 优化汽车形象¶
8.7. 问答考验¶
■地图最大能包含多少个图块?
解析:512*512
■地图中墙的属性有什么意义?加上墙的属性后,屏幕上能否显示出来墙的颜色?
解析:加上墙的属性后,普通精灵无法穿越。屏幕上只是会显示对应的图块图案,墙的属性在屏幕上看是透明的,不是显示出来。
精灵与图块重叠积木块 和 不同类型精灵重叠积木块有什么区别和共同之处?
解析:两个重叠事件的处理方式是一样的,都是重叠之后就会触发。
区别之处是重叠类型的不同:“精灵重叠”积木块只能处理精灵之间的重叠事件;在地图中,我们是用图块绘制的,所以要用到精灵与图块重叠积木块。 当然,在这个案例中,如果你把不同的交通指示设置为不同类型的精灵,也是可以做到的,只是这样的方式,我们会用到很多精灵类型,而且放置精灵的位置都要做单独处理,用图块的话更加简单方便。
———————————— END ————————————————————