最新文章
泰课在线 | 微信拼团成功后如何获取课程?
08-09 17:57
Unity教程 | 使用ARKit为iOS开发AR应用
07-31 17:23
Unity Pro专业版7折订阅四选一工具包之VR开发与艺术设计
07-28 11:47
网友使用虚幻UE4实现CAVE 多通道立体渲染的沉浸式环境
07-27 11:57
VR晕动症调查:未来5年内大部分VR晕动症将得到解决
07-27 11:26
AMD CEO:未来3-5年最重要 希望5年达1亿VR用户
07-27 10:44
制作一款2D射击游戏
课程准备
本次课程旨在利用Unity 2D新功能,制作一款2D平台射击游戏,涵盖创建2D地图、设置地图碰撞、添加玩家角色及敌人、实现角色射击等操作。
需要提前准备以下内容:
- 带有2D新功能的Unity 5.5 a1实验预览版,[下载链接]
- 掌握Unity Editor的界面功能及基本操作。
新建场景
- 新建Unity 2D工程,导入下载的工程资源,然后新建场景。使用新的Tile Map工具创建游戏地图。
- 依次点击菜单项“Window” > “Tilemap Palette”打开Tilemap Palette,点击界面上方的“Palette名称”,新添加一个Palette。
- 将“Sprites > Environment”文件夹下的地图图片拖拽至Tilemap Palette界面,为Unity自动生成的Tile资源指定保存目录。
- 依次点击菜单项“GameObject” > “2D Object” > “Tile Map”新建一个Tile Map,将其重命名为“GameMap”,并将其子节点“Layer”重命名为“Base”。
- 选中Palette上的Grid后切换至场景视图,即可开始绘制地图。
关于Tile Map的用法,我们之前已详细介绍过。还不了解Tile Map操作的开发者,请查看Tile Map使用指南。
添加玩家角色
- 删除场景自带的相机,将“Prefabs > Game”文件夹下的“FollowCam”拖拽至层级视图。
- 将“Prefabs”文件夹下的“PlayerMatt”拖拽至层级视图以添加玩家角色,并将其设为FollowCam上“Basic Camera Follow”脚本的“Follow Target”,使相机跟随玩家移动。
- 将之前新建的Tile Map的“Sorting Layer”设置为“LBG1”,确保玩家显示在地图上面。
现在点击运行,按下方向键即可控制玩家移动。但由于尚未添加碰撞,玩家可以穿过墙壁。
添加地图碰撞
- 新建TileMap并将其重命名为“ColliderMap”,将其子节点“layer”重命名为“PlayerCollision”。
- 在Palette面板中选择“Collisions”,使用红色图块绘制出地图边界碰撞检测区域。
- 在碰撞层“PlayerCollision”上添加“Polygon Collider 2D”组件,并将“Tag”设置为“PlayerCollider”。
- 为避免碰撞层显示,取消勾选碰撞层上的“Tile Map Renderer”组件。
再次点击运行,玩家此时将无法穿透墙壁。
添加子弹射击
- 将“Prefabs > Game”文件夹下的“WeaponSetup”拖拽至层级视图。
- 选中“ColliderMap”,依次点击菜单项“GameObject” > “2D Object” > “Tile Map”新建一个Layer,将其重命名为“WeaponCollider”作为子弹的碰撞层,并将其“Tag”设为“BulletCollider”。
- 同样添加“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游戏就是这么简单!大家赶紧动手操作起来吧!