制作一款2D射击游戏

2016年10月17日 18:12 0 点赞 0 评论 更新于 2025-11-21 13:35

课程准备

本次课程旨在利用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,将其重命名为“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游戏就是这么简单!大家赶紧动手操作起来吧!