课程准备
本次课程的目标是利用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游戏就这么简单!大家赶紧动手操作起来吧!