成都unity3d培训
达内成都会计中心

13408446380

热门课程

制作一款3D炸弹超人游戏

  • 时间:2018-02-11 17:08
  • 发布:成都达内
  • 来源:成都达内

说起炸弹超人,相信很多朋友都玩过类似的游戏,其中为人熟知的莫过于《泡泡堂》。该类型游戏需要玩家在地图中一边跑动一边放置炸弹,同时还要躲避敌方炸弹保护自己。初的炸弹超人游戏都是2D的,今天成都unity3d培训分享的这篇文章将教大家在Unity中实现一款3D的炸弹超人游戏。

准备工作

将项目初始资源导入Unity项目,资源目录如下:

制作一款unity3d炸弹超人游戏

其中分别包含要用于游戏的动画、材质、模型、背景音乐、物理材质、预制件、场景、脚本、音效及图片资源。

放置炸弹

打开项目中的Game场景并运行。

制作一款unity3d炸弹超人游戏

可以通过WASD键或方向键来操作所有角色进行移动。下面来让角色可以放置炸弹。角色1(红色)通过按下空格键来放置炸弹,角色2(蓝色)则通过按下回车键进行同样的操作。

打开Player脚本,该脚本负责角色所有的移动及动画逻辑。找到DropBomb函数,添加代码如下:

制作一款unity3d炸弹超人游戏

其中RoundToInt函数用于对炸弹的坐标参数四舍五入,以避免炸弹放置位置偏离出地块中心。

制作一款unity3d炸弹超人游戏

运行场景,效果如下:

制作一款unity3d炸弹超人游戏

创建爆炸效果

在Scripts文件夹下新建C#脚本命名为Bomb:

制作一款unity3d炸弹超人游戏

找到Prefabs文件夹下的Bomb预制件,将Bomb脚本绑定到该游戏对象上。然后打开Bomb脚本,添加代码如下:

制作一款unity3d炸弹超人游戏

在检视面板中,将Bomb预制件赋值给脚本的Explosion Prefab属性,该属性用于定义需要生成爆炸效果的对象。Bomb脚本使用了协程来实现爆炸的效果,StartCoroutine函数将朝着4个方向调用CreateExplosions函数,该函数用于生成爆炸效果,在For循环内遍历炸弹能够炸到的所有单元,然后为能够被炸弹影响的各个单元生成爆炸特效,炸弹对墙壁是没有伤害的。后面,在进入下一次循环前等待0.05秒。

代码作用类似下图:

制作一款unity3d炸弹超人游戏

红线就是Raycast,它会检测炸弹周围的单元是否为空,如果是,则朝着该方向生成爆炸效果。如果碰撞到墙,则不生成爆炸并停止检测该方向。所以前面需要让炸弹在地块中心生成,否则就会出现不太理想的效果:

制作一款unity3d炸弹超人游戏

Bomb代码中定义的LayerMask用于剔除射线对地块的检测,这里还需要在检视面板中编辑层,并新增用户层命名为“Blocks”,然后将层级视图中Blocks游戏对象的Layer设置为“Blocks”。

制作一款unity3d炸弹超人游戏

更改Blocks对象的层级时会跳出提示框,询问是否更改子节点,选择是即可:

制作一款unity3d炸弹超人游戏

然后选中Bomb对象,在检视面板中将Bomb脚本的Level Mask设为“Blocks”:

制作一款unity3d炸弹超人游戏

连锁反应

如果炸弹炸到了另一个炸弹,那么被炸到的炸弹也会爆炸。Bomb脚本中的OnTriggerEnter函数是MonoBehaviour预定义的函数,会在触发器与Rigidbody碰撞之前调用。这里OnTriggerEnter会检测被碰撞的炸弹是否是被炸弹特效所碰撞,如果是,则该炸弹也要爆炸。

现在运行场景,效果如下:

制作一款unity3d炸弹超人游戏

判定游戏结果

打开Player脚本,添加下面的代码:

制作一款unity3d炸弹超人游戏

其中GlobalManager是GlobalStateManager脚本的引用,该脚本用于通知玩家获胜或死亡的消息。dead则用于标志玩家是否死亡。

更改OnTriggerEnter函数代码如下:

制作一款unity3d炸弹超人游戏

该函数作用为设置dead变量来通知玩家死亡,并告知全局状态管理器玩家的死亡信息,然后销毁玩家对象。

在检视面板中选中两个玩家对象,将Global State Manager游戏对象赋值给Player脚本的Global Manger字段。

制作一款unity3d炸弹超人游戏

再次运行场景,效果如下:

制作一款unity3d炸弹超人游戏

打开GlobalStateManager脚本,添加以下代码:

制作一款unity3d炸弹超人游戏

其中deadPlayers表示死亡的玩家数量,deadPlayerNumber则用于记录死亡玩家的编号。PlayerDied函数用于添加死亡玩家,并设置deadPlayerNumber属性,在0.3秒后检测另一位玩家是否也死亡。

然后在脚本中添加CheckPlayersDeath函数,代码如下:

制作一款unity3d炸弹超人游戏

以上代码用于判断哪位玩家获得胜利,如果两位玩家均死亡,则打成平局。

运行场景,效果如下:

制作一款unity3d炸弹超人游戏

总结

到此本篇教程就结束了,大家还可以在此基础上对该项目进行扩展,例如添加“推箱子”功能,将位于自己脚边的炸弹推给敌方,或是限制能够放置的炸弹数量,添加快速重新开始游戏的界面,设置可以被炸弹炸毁的障碍物,设置一些道具用于获得炸弹或者增加生命值,还可以增加多人对战模式与朋友一起变身炸弹超人等等。大家都来发挥自己的创意吧!

本文章由成都unity3d培训机构转载自unity官方平台感谢大家的关注,如有侵权请联系我们进行删除

上一篇:Unity3D 用触摸和鼠标输入缩放相机
下一篇:Unity2017中的混合光照教程
选择城市和中心
贵州省

广西省

海南省