课程准备
本次课程的目标是利用Unity 2D新功能,制作一款2D平台射击游戏,其中包括创建2D地图、设置地图碰撞、添加玩家角色及敌人、角色射击等操作。
需要提前准备以下内容:
1、带有2D新功能的Unity 5.5 a1实验预览版,下载链接
2、掌握Unity Editor的界面功能及基本操作。
新建场景
1、新建Unity 2D工程并导入下载的工程资源,然后新建场景,使用新的Tile Map工具创建游戏地图。
2、依次点击菜单项Window > Tilemap Palette打开Tilemap Palette,点击界面上方的Palette名称新添加一个Palette。
泰课在线

3、将Sprites > Environment文件夹下的地图图片拖拽至Tilemap Palette界面,为Unity自动生成的Tile资源指定保存目录。
4、依次点击菜单项GameObject > 2D Object > Tile Map新建一个Tile Map,将Tile Map重命名为GameMap,其子节点Layer重命名为Base。
5、选中Palette上的Grid后切换至场景视图,即可开始绘制地图。

泰课在线

关于Tile Map的用法我们之前也已详细介绍过,还不了解Tile Map操作的开发者请查看Tile Map使用指南。
添加玩家角色
1、删除场景自带的相机,将Prefabs > Game文件夹下的FollowCam拖拽至层级视图。
2、将Prefabs文件夹下的PlayerMatt拖拽至层级视图添加玩家角色,并将其设为FollowCam上Basic Camera Follow脚本的Follow Target,让相机跟随玩家移动。

泰课在线

3、将之前新建的Tile Map的Sorting Layer设置为LBG1,让玩家显示在地图上面。
现在点击运行,按下方向键即可控制玩家移动了,但由于还未添加碰撞,所以玩家可以穿过墙壁。

泰课在线

 

 

 

 

 

 

添加地图碰撞
1、新建TileMap重命名为ColliderMap,其子节点layer重命名PlayerCollision。
2、在Palette面板中选择Collisions,使用红色图块绘制出地图边界碰撞检测区域,如下图:

泰课在线

3、在碰撞层PlayerCollision上添加Polygon Collider 2D组件,并将Tag设置为PlayerCollider。
4、为了不让碰撞层显示,取消勾选碰撞层上的Tile Map Renderer组件。
再次点击运行,玩家此时就无法穿透墙壁了。

泰课在线
添加子弹射击

1、将Prefabs > Game文件夹下的WeaponSetup拖拽至层级视图。
2、选中ColliderMap,依次点击菜单项GameObject > 2D Object > Tile Map新建一个Layer,重命名为WeaponCollider作为子弹的碰撞层,并将其Tag设为BulletCollider。

泰课在线
3、同样添加Polygon Collider 2D组件并取消勾选Tile Map Renderer。
我们已经在PlayerController脚本的代码中添加了发射子弹的逻辑,如下:

 
 
//--------------------------------------------------------------------------
        // PLAYER SHOOTING
        //--------------------------------------------------------------------------
        // We get the user input both Project Input Settings and custom imput key.
        if(Input.GetButtonDown("Fire1") || (Input.GetKeyDown(KeyCode.Z)) == true)
        {
                // Note we just request a projectile whether it fires or not
                // Spawn the projectile
                PopShotController.Spawn(gunPoint.transform.position, playerAngle);
                //Spawn the firing effect for the specific projectile
                PopShotFlashController.Spawn(gunPoint.transform.position);
                soundClip.PlayOneShot(soundClip.clip);
 
 
        }

再次点击运行,按下Ctrl或鼠标左键即可发射子弹。

泰课在线
添加敌人
最后一步,添加挡路的敌人。将Prefabs文件夹下的BxBot拖拽至场景,放在合适的位置。重复以上步骤多放置几个敌人。

泰课在线

敌人本身已配置好动画组件,运行场景,敌人会挡在道路中间来回窜动。

泰课在线
到此整个2D射击游戏就做完了,大家还可以自行发挥,添加音效、玩家被敌人碰到后死亡以及敌人被子弹射中后死亡的逻辑等。使用全新升级的Unity 2D功能,制作一款2D游戏就这么简单!大家赶紧动手操作起来吧!