请选择 进入手机版 | 继续访问电脑版

查看: 47551|回复: 451

[原创] Unity Training Day|制作一款2D射击游戏

  [复制链接]

1192

主题

1893

帖子

2万

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
24845
QQ
发表于 2016-8-3 03:12:25 | 显示全部楼层 |阅读模式
在刚刚结束的Unity Training Day开发者训练营中,来自Unity新加坡的2D研发团队为大家系统介绍了Unity 2D的新功能,并利用该功能完成了一款2D平台射击游戏。今天就来回顾一下此次课程。

课程准备

本次课程的目标是利用Unity 2D新功能,制作一款2D平台射击游戏,其中包括创建2D地图、设置地图碰撞、添加玩家角色及敌人、角色射击等操作。

需要提前准备以下内容:
1、带有2D新功能的Unity 5.5 a1实验预览版,下载链接
2、下载工程资源(请回复本帖):
游客,如果您要查看本帖隐藏内容请回复

3、掌握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脚本的代码中添加了发射子弹的逻辑,如下:

[C#] 纯文本查看 复制代码
        //--------------------------------------------------------------------------
                // 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游戏就这么简单!大家赶紧动手操作起来吧!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

0

主题

5

帖子

2705

贡献

中级UU族—2级

Rank: 5Rank: 5

积分
2705
发表于 2016-8-3 04:10:44 | 显示全部楼层
下载下来 看看

0

主题

1

帖子

30

贡献

初级UU族—1级

Rank: 1

积分
30
发表于 2016-8-3 04:18:26 | 显示全部楼层
感谢分享

0

主题

1

帖子

20

贡献

初级UU族—1级

Rank: 1

积分
20
发表于 2016-8-3 06:00:53 | 显示全部楼层
谢谢分享,学习一下。

4

主题

33

帖子

510

贡献

中级UU族—1级

Rank: 4

积分
510
发表于 2016-8-3 06:41:11 | 显示全部楼层
牛人太多了。。。。。。。。。。。。。。。。。。。。

0

主题

2

帖子

20

贡献

初级UU族—1级

Rank: 1

积分
20
发表于 2016-8-3 07:03:28 | 显示全部楼层
666dsa6d6sad6sa6dsa6d6sad6

0

主题

1

帖子

10

贡献

初级UU族—1级

Rank: 1

积分
10
发表于 2016-8-3 07:06:39 | 显示全部楼层
谢谢分享

0

主题

4

帖子

90

贡献

初级UU族—2级

Rank: 2

积分
90
发表于 2016-8-3 07:39:51 | 显示全部楼层
感谢分享

0

主题

2

帖子

15

贡献

初级UU族—1级

Rank: 1

积分
15
发表于 2016-8-3 08:15:49 | 显示全部楼层
谢谢楼主的分享,希望你能分享更多的学习资源,非常感谢。

0

主题

1

帖子

15

贡献

初级UU族—1级

Rank: 1

积分
15
发表于 2016-8-3 08:19:06 | 显示全部楼层
谢谢分享 下来看看 代码
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表