UFO Game(2D)

  这是我学习的第一个在完全2D模式下用Unity制作的游戏,发现3D与2D在Unity的相似程度挺多的(如代码,组件多了2D,但功能实现都差不多),但也有不同之处,这里就来浅谈一谈。

  

  首先说说刚进去的界面和3D模式下的区别,主要是Scene视图中是2D模式,Main Camera是Orthographic正交投影。

  在2D里向Scene视图或Hierarchy视图导入一个Sprite(精灵),会自带一个Sprite Render组件,用于展示我们拖入的精灵图片。

  

  注意:在2D游戏渲染的时候,因为Sprite不是3D对象,故需要我们手动设置,哪个Sprite渲染在最上面层或在另一个上面。

  手动设置渲染顺序方法:将每个Sprite都分配给一个排序层,在Sprite Render组件中,点开Sorting Layer下拉菜单,添加自己需要的排序层,选择Add Sorting Layer来添加,添加完后在排序层(Sorting Layers)通过点击拖拽的方式重新排序(这里的层Layer按从上到下的顺序渲染。底部的层会最后渲染,因此会出现在之前的层最上方)。当然,最后不要忘记添加到对应各Sprite的Sorting Layer。(注意:在添加新的Sprite进入场景,估计会看不到,因为默认的Sorting Layer是Default在最上面,最先渲染,就在最下层可能被遮住了,故要到其Sorting Layer添加自己的排序层)。

  Sprite可以看成画了图片的玻璃片,它是平坦的,没有高度和体积。

  Rigidbody 2D(其Standard模式下在Y轴默认使用了重力)和Rigidbody(3D)互不影响,两个独立的系统。补充:3D和2D的共同碰撞系统的要求:双方都要有Collider,至少有一方有Rigidbody。

  所有Sprite添加Collider,会自动在图片边缘大小添加绿色的碰撞线(也许有的需要细修改)。

  注意:在2D模式下Sprite中满足了碰撞系统的要求后,也许会出现两个Sprite不能在同一个视图中共存,两个Sprite的边缘框会将两个对象推开。问题在于:因为开始game后,物理引擎会检测到两个对象占据了同样的2D空间,如将Background对象当成了一个独立的固体对象,然后player也是一个固体对象,物理引擎认为不应该在Background里面,然后给所有相关的Rigidbody2D施力,将两个对象推开。解决方法:把单独的大碰撞器换成一系列小碰撞器来代替墙体(模仿四条矩形边)。

  2D模式下Sprite内的Collider需要满足上面的需要才能运用,在3D模式下,也可以模仿四条矩形边的形式来组装一个大的碰撞器,或者一个Cube放在某位置上,Scale来填充Game界面的画面(自带有Collider、删除Render就可以了)

  

  组件也可以复制、粘贴。

  组件右边的那本书介绍有这个组件的用法等,还有对应API(单击黑色的SWITCH TO SCRIPTING),最重要的是它是本地的,不需要网络。

  最后给出这个小游戏的资源链接:

  https://pan.baidu.com/s/19qhgg8qqsU3TgvbNgEPWgQ

猜你喜欢

转载自www.cnblogs.com/whpu-wzp/p/9243102.html
ufo
2D