❥ Cheer Up ❥
❥游戏说明:
❥除了音效,游戏地图上的元素有:
❀草丛(玩家可以躲进去,敌人攻击不到)
❀河流(双方都过不去,但是子弹可以穿过)
❀铁墙(坦克和子弹都过不去)
❀砖墙(一发子弹摧毁后坦克可以过去)
❀空气墙(围在地图周围,防止出界)
❀敌方大坦克(打两下才死)
❀敌方小坦克(打一下就死)
❀有玩家1和玩家2,可以选择单人/双人模式
❥地图是随机生成的,每次打开都不一样,丰富了游戏的多样性和可玩性。敌方坦克(包括大小坦克)一次最多存在3个,被摧毁后间隔3s在地图的左上/右上/上面中间 随机生成相应数量的。
❥输赢的判断:
敌方坦克数目一定,每消灭一个获得1分,消灭满20个,也就就是得分20分获得胜利,玩家自己有3生命值(即3条生命),被击中一次损失1条生命并且在出生点复活,获得3s的无敌效果。生命耗尽或者老家被摧毁,就game over。
❥可以理解为有10个类:
☀️项目效果展示
- 这里的gif是用了一款ScreenToGif的软件录制的,处理的比较短
- 右侧图标分别表示消灭的敌人数量(上) 和 当前的生命值(下),被击中一次生命值-1,变为0的时候玩家死亡,游戏结束
目录
☀️前言
⭐️相关背景
- 博主在大二暑期接触了unity,借鉴实战视频上手花两天复刻了 “坦克大战” 这一经典小游戏,发现做游戏这种过程真的比玩儿游戏还要爽啊,hh,看着一些功能逐渐被实现,游戏越来越完整,真的是挺令人舒适和爽快。由于那时候零基础直接上手,对于一些基础操作真的是不太熟练,很不灵活,幸好有一些前辈的帮助(比如优快云小伙伴们熟悉的y哥),解决了一些自己难以解决的问题,帮助小虾在迷茫的夜海上拨开神秘的迷雾。
⭐️相关知识
- 在学习的过程中,几个比较重要的知识点就是:预制体、克隆体、精灵渲染器、渲染层级、脚本、碰撞检测、触发检测、AI设计、UI设计、固定物理帧...
⭐️版本说明
- 小虾采用的是Unity一个较新的版本-2021.1.16,这里建议小伙伴们下载和教程相同版本的,不然真的会有可能遇到卡点消耗心情哈。
- 可以和我一样在Unity Hub里面安装,Hub感觉挺好用的。
⭐️许可证激活
- 这个...有段时间不登好像就要重新激活许可证,遇到同样问题的小伙伴可以进入下图的网址:Unity - Activation 按提示进行操作即可
⭐️及时保存
- 打开的时候总是激动又煎熬,U3D启动有点慢并且操作过程中很可能就会报废,所以项目过程中一定要及时保存,不然一不小心可能就要重新来过啦!
☀️项目概况
⭐️项目整体布局
- 整个项目工程的一个概况就在下面了,Hierarchy菜单下是放 预制体(Prefab) 的 克隆体(Clone) 的,这些克隆体可以拖到左上方的大界面中,通过点击播放按钮进行效果检验。左下方的就是整体的动画效果显示了。
- 做一个小游戏项目,我们首先需要素材,这里推荐初学的小伙伴去siki学院学习,里面会有相应的完整初级案例教程。
⭐️猜想验证
- 学习的过程就是不断验证猜想并接收新知识的过程,我本来想坦克大战里面的地图就是把预先处理好的 “砖墙、水泥墙、草坪、河流、空气墙(防止Object越过边界的)” 按照一定规律和自己的喜好摆放开来作为整张地图的,但事实打脸了(
觉得自己真傻)。 - 在 地图实例化(MapCreation) 中,我们使用了 “产生随机位置” 的方法,在避开已有位置的基础上,自动生成其它的地图元素。
代码如下:
// 产生随机位置的方法
private Vector3 CreateRandomPosition() // 列表中没有这个位置,才能产生
{
while(true)
{
// 不生成x=-13,13(变为10)这两列,y=-8,8这两行的位置
Vector3 createPosition = new Vector3( Random.Range(-9,10), Random.Range(-7,8), 0); // x y z,Random.Range(a,b)中b的实际值是b-1
if(!HasThePosition(createPosition))
{
return createPosition; // 列表中没有的位置就返回
}
// false 则继续循环
}
}