赞
踩
2D较为常用用于快速搭建地图的方法,对于较低需要快速开发2D游戏场景TailMap就是比较好的选择,但是不建议任何2D项目都使用TailMap,因为当前版本TailMap仍然有很多缺陷,就我个人学习Unity使用过程中就遇到不少因为TailMap缺陷带来的问题。
TailMap需要将一个或一系列精灵作为瓦片(既可以拖拽到创建好的平铺调色板中,然后将生成的瓦片文件放到你合适的位置,如果没有平铺调色板就创建一个,这个位于窗口选项中),我们只需要选中对应的瓦片地图(右键创建2D一个瓦片地图,一般用的都是矩形),然后在窗口选项中打开平铺调色板选中对应的瓦片,使用画笔就可以将其绘制在我们的场景中了,一面的图示粗略展示一下TailMap的使用。
TailMap各个选项的作用,鼠标时选中瓦片查看信息,右边的移动选项没啥用,画笔,选中一个区域,也可以单独选中一个瓦片,就可以在场景中绘制此片区域或这个瓦片,右边的框选则是可以在场景中平铺选中的瓦片,接下来则是类似取色一样取瓦片,橡皮通常是擦出场景中的一 个瓦片,你可以在调色板中选中一片区域檫一片区域,最后一个则是区域填充。
经常你会遇到瓦片不能占据满一个方格的状况,我们需要在原图片位置设置它的每单位像素数,让这个值得大小和原图片的像素比列保持一致然后保存覆盖瓦片文件即可。
如果你按下了平铺调色板的编辑模式(这个选项亮起时),那么就会对调色板里的瓦片进行修改而不是选中,需要注意。
TailMap中我们常常需要设置瓦片具有碰撞效果,选中你放置瓦片的位置中其中一个瓦片文件,你可以看到瓦片的碰撞器类型,一共有三种,一种是五,则表示此精灵代表的瓦片文件不会产生任何碰撞,后面两种都会产生碰撞,精灵则是代表和精灵的大小保持一致,网格则是表示和瓦片的地图的一个网格大小保持一致。
然而仅仅设置了这些不会使瓦片无缘无故产生碰撞,在瓦片地图上,你必须要添加这三个组件:
(Rigidbody 2d其实是会随着你导入其它两个而自动加入的,默认将它设置为静态就好)其中Composite Collider 2D是让瓦片按设置产生碰撞,而TailMap Collider 2D则是将场景中的每个相邻瓦片的碰撞合并到一起,减少开销。
有时候我们可能会将平台作为一个瓦片文件在场景中绘制,但是你可能会发现,当我们将平台绘制到地图上会覆盖原有的图片,如果这个图片不是占满一个方格还会导致背景露出来,一种解决方法是像这样的平台文件将其作为预制件使用,另一种是设置多个瓦片地图,将背景层的图层设低,平台设置到高位就可以实现使用瓦片地图绘制了。
然而,瓦片地图有着极大的缺陷,瓦片地图中任何部位的碰撞都属于一个整体,因此做射线检测时,有可能的你的射线的传过很多在一个瓦片地图搭建的平台但返回的检测结果只有一个,另外,瓦片地图中如果你对瓦片地图做了修改影响的是整个地图区域而不是一片区域,不方便做区域修改。然后还有一个非常致命的缺陷,就是瓦片地图进行碰撞检测是很容易出现高速子弹才有的碰撞脱穿,即使你的子弹速度较慢,而且一般在碰撞检测时,一般发生两个碰撞的物体其中一个需要rigidbody刚体组件,然而瓦片地图的刚体会被忽略导致你必须得在子弹上加刚体组件(是不是很惊喜?没错我就是被这样折磨了)。
你可看到有些子弹发生了穿墙,但是你需要知道的是我用的一个速度更快的子弹往敌人预制体身上打的时候却不会发生这种传过去的情况,这种的解决方法就是得要把所有的子弹当高速子弹进行射线检测处理,就是工作量有点......
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。