Unity学习之坦克游戏制作(2)游戏场景的制作

文章目录

  • 1. 基础场景的搭建
  • 2. 游戏主面板
    • 2.1 拼出面板
    • 2.2 创建新面板
    • 2.3 设置面板复用
    • 2.4 退出界面
  • 3. 坦克基类
    • 3.1 创建基类脚本
      • 3.1.1 基类基本属性
      • 3.1.2 抽象开火函数
      • 3.1.3 受伤虚函数
      • 3.1.4 死亡虚函数
  • 4 玩家——基础移动旋转摄像机跟随
  • 4.1 玩家对象脚本
    • 4.2 控制坦克移动
    • 4.3 先实现部分函数
    • 4.4 设置摄像机跟随玩家
  • 5 小地图
    • 5.1 创建新的摄像机和贴图
    • 5.2 控制摄像机移动的脚本
  • 6 武器和子弹对象
    • 6.1 武器脚本
    • 6.2 子弹脚本
    • 6.3 武器奖励对象和获取特效
    • 6.3.1 随机武器
    • 6.4 属性奖励相关
      • 6.4.1 属性奖励脚本
  • 7 可击毁箱子
    • 7.1 箱子预设体
    • 7.2 脚本
  • 8 固定不动的敌人
  • 9 移动的敌人
    • 9.1 坦克移动
    • 9.2 坦克一直盯着玩家
  • 10 怪物血条
  • 10 通关点


1. 基础场景的搭建

切换到GameScene,进行场景的搭建
Unity学习之坦克游戏制作(2)游戏场景的制作_第1张图片

2. 游戏主面板

得分、血量、设置退出等

2.1 拼出面板

Unity学习之坦克游戏制作(2)游戏场景的制作_第2张图片

2.2 创建新面板

Unity学习之坦克游戏制作(2)游戏场景的制作_第3张图片

Unity学习之坦克游戏制作(2)游戏场景的制作_第4张图片
提供方法更新面板
在这里插入图片描述

Unity学习之坦克游戏制作(2)游戏场景的制作_第5张图片
通过帧间隔时间 进行累加 会比较准确

Unity学习之坦克游戏制作(2)游戏场景的制作_第6张图片

在Start函数中测试
Unity学习之坦克游戏制作(2)游戏场景的制作_第7张图片

2.3 设置面板复用

复用设置面板
直接从BeginScene中把root中的Setting面板复制,然后在GameScene的root中复制
在btn中增加监听界面
Unity学习之坦克游戏制作(2)游戏场景的制作_第8张图片
现在运行会报错,因为Music对象找不到
Unity学习之坦克游戏制作(2)游戏场景的制作_第9张图片
所以同时可以复用开始场景的背景音乐 ,把 开始场景的BKMusic拖过来直接用
但这时候还是会报错,在点击关闭的时候,之前的逻辑是显示主菜单的界面,但这里没有主菜单,所以报错

所以在SettingPanel 中,进行判断

Unity学习之坦克游戏制作(2)游戏场景的制作_第10张图片

2.4 退出界面

点击退出后,弹出确定面板
Unity学习之坦克游戏制作(2)游戏场景的制作_第11张图片

创建脚本
Unity学习之坦克游戏制作(2)游戏场景的制作_第12张图片

别忘了在GamePanel里面增加显示的监听事件
Unity学习之坦克游戏制作(2)游戏场景的制作_第13张图片
在打开游戏设置 和 退出游戏面板的时候,暂停时间的增加

在点击事件的时候,将时间缩放量改为0
Unity学习之坦克游戏制作(2)游戏场景的制作_第14张图片
在隐藏设置面板和退出面板的时候 将缩放量改回来
Unity学习之坦克游戏制作(2)游戏场景的制作_第15张图片

3. 坦克基类

Unity学习之坦克游戏制作(2)游戏场景的制作_第16张图片

3.1 创建基类脚本

3.1.1 基类基本属性

Unity学习之坦克游戏制作(2)游戏场景的制作_第17张图片

3.1.2 抽象开火函数

Unity学习之坦克游戏制作(2)游戏场景的制作_第18张图片

3.1.3 受伤虚函数

Unity学习之坦克游戏制作(2)游戏场景的制作_第19张图片

3.1.4 死亡虚函数

在死亡是Destory该对象 并且播放 相应的特效
创建gameobject用来关联特效
在这里插入图片描述
Unity学习之坦克游戏制作(2)游戏场景的制作_第20张图片

4 玩家——基础移动旋转摄像机跟随

4.1 玩家对象脚本

继承坦克基类
Unity学习之坦克游戏制作(2)游戏场景的制作_第21张图片

4.2 控制坦克移动

Unity学习之坦克游戏制作(2)游戏场景的制作_第22张图片

还有炮台旋转
由于敌人和玩家都能旋转炮台,所以在基类中添加成员属性
Unity学习之坦克游戏制作(2)游戏场景的制作_第23张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第24张图片
脚本拖入 场景中的玩家坦克,并关联头部
现在应该能WS前后移动 AD旋转 鼠标转动头部

4.3 先实现部分函数

Unity学习之坦克游戏制作(2)游戏场景的制作_第25张图片

4.4 设置摄像机跟随玩家

Unity学习之坦克游戏制作(2)游戏场景的制作_第26张图片
把摄像机拖到炮台上,并设置一下XYZ轴让其对准坦克的炮台

5 小地图

5.1 创建新的摄像机和贴图

Unity学习之坦克游戏制作(2)游戏场景的制作_第27张图片
拖入摄像机的目标贴图
Unity学习之坦克游戏制作(2)游戏场景的制作_第28张图片
拖入UI 的map 组件
Unity学习之坦克游戏制作(2)游戏场景的制作_第29张图片

5.2 控制摄像机移动的脚本

Unity学习之坦克游戏制作(2)游戏场景的制作_第30张图片

把Player 拖入 target中
Unity学习之坦克游戏制作(2)游戏场景的制作_第31张图片

6 武器和子弹对象

Unity学习之坦克游戏制作(2)游戏场景的制作_第32张图片
选择一个武器拖入玩家的Weapon槽中
Unity学习之坦克游戏制作(2)游戏场景的制作_第33张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第34张图片

武器炮口
也会有多个子弹的武器
Unity学习之坦克游戏制作(2)游戏场景的制作_第35张图片

6.1 武器脚本

Unity学习之坦克游戏制作(2)游戏场景的制作_第36张图片
关联预设体

Unity学习之坦克游戏制作(2)游戏场景的制作_第37张图片
在玩家脚本中 声明一个transform 来关联武器,命令武器发射
Unity学习之坦克游戏制作(2)游戏场景的制作_第38张图片

Unity学习之坦克游戏制作(2)游戏场景的制作_第39张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第40张图片
因为受伤函数需要知道 谁打得我,所以在武器脚本中关联下谁发射的子弹
Unity学习之坦克游戏制作(2)游戏场景的制作_第41张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第42张图片

6.2 子弹脚本

Unity学习之坦克游戏制作(2)游戏场景的制作_第43张图片
改变一下武器的预设体,由于不想动原有预设体,所以创建新的预设体
重新关联bullet
Unity学习之坦克游戏制作(2)游戏场景的制作_第44张图片

Unity学习之坦克游戏制作(2)游戏场景的制作_第45张图片
此时按发射能动起来

Unity学习之坦克游戏制作(2)游戏场景的制作_第46张图片
给子弹添加物理效果,并设置为触发器

Unity学习之坦克游戏制作(2)游戏场景的制作_第47张图片
会有往下落的效果
Unity学习之坦克游戏制作(2)游戏场景的制作_第48张图片
脚本中增加碰撞触发函数

Unity学习之坦克游戏制作(2)游戏场景的制作_第49张图片
创建新层级
Unity学习之坦克游戏制作(2)游戏场景的制作_第50张图片
把墙壁的层级都改为Cube

Unity学习之坦克游戏制作(2)游戏场景的制作_第51张图片
设置武器拥有者
Unity学习之坦克游戏制作(2)游戏场景的制作_第52张图片
让子弹在发射的时候计算伤害

设置子弹销毁时的特效
在这里插入图片描述
Unity学习之坦克游戏制作(2)游戏场景的制作_第53张图片

爆炸特效中有Audio Source组件
所以创建时改音效的音量和开启状态

6.3 武器奖励对象和获取特效

创建多个武器预设体
Unity学习之坦克游戏制作(2)游戏场景的制作_第54张图片

关联子弹

同理创建新子弹
Unity学习之坦克游戏制作(2)游戏场景的制作_第55张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第56张图片

6.3.1 随机武器

Unity学习之坦克游戏制作(2)游戏场景的制作_第57张图片
在做主页面时做过一个旋转的脚本,直接拖进来
Unity学习之坦克游戏制作(2)游戏场景的制作_第58张图片
运行时自动转
把这个做成触发器

创建武器奖励的脚本,让Player层的碰撞器碰到后就销毁自己

Unity学习之坦克游戏制作(2)游戏场景的制作_第59张图片
将武器预设体存储在脚本中,并随机给玩家发放武器

所以此时玩家应该拥有一个给外界提供的给自己切换武器的方法
到Player的脚本中增加
Unity学习之坦克游戏制作(2)游戏场景的制作_第60张图片

然后在Weapon中调用这个方法

Unity学习之坦克游戏制作(2)游戏场景的制作_第61张图片

在Player脚本中记录武器位置,让武器装载在这上面
Unity学习之坦克游戏制作(2)游戏场景的制作_第62张图片

6.4 属性奖励相关

套路和武器差不多
创建预设体拖入旋转脚本设置为Trigger
Unity学习之坦克游戏制作(2)游戏场景的制作_第63张图片

6.4.1 属性奖励脚本

Unity学习之坦克游戏制作(2)游戏场景的制作_第64张图片
给各个预设体批量添加该脚本,并设置Type
Unity学习之坦克游戏制作(2)游戏场景的制作_第65张图片
触发的事件
Unity学习之坦克游戏制作(2)游戏场景的制作_第66张图片
设置特效
Unity学习之坦克游戏制作(2)游戏场景的制作_第67张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第68张图片

7 可击毁箱子

7.1 箱子预设体

Unity学习之坦克游戏制作(2)游戏场景的制作_第69张图片
其中有一个碰撞器
Unity学习之坦克游戏制作(2)游戏场景的制作_第70张图片

7.2 脚本

1打到自己的子弹 应该销毁
2 打到箱子 随机创建奖励的逻辑

把箱子Tag改成cube,之前子弹逻辑中处理过打中cube自动销毁
Unity学习之坦克游戏制作(2)游戏场景的制作_第71张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第72张图片
关联奖励
Unity学习之坦克游戏制作(2)游戏场景的制作_第73张图片
为箱子销毁添加特效
Unity学习之坦克游戏制作(2)游戏场景的制作_第74张图片
在cube销毁自己前放特效
Unity学习之坦克游戏制作(2)游戏场景的制作_第75张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第76张图片
加上自动销毁AudioSource 的脚本

Unity学习之坦克游戏制作(2)游戏场景的制作_第77张图片

8 固定不动的敌人

拖入一个固定不动的敌人,让其头部自动旋转,在UI设计时我们已经写过头部旋转相关
Unity学习之坦克游戏制作(2)游戏场景的制作_第78张图片

Unity学习之坦克游戏制作(2)游戏场景的制作_第79张图片
让其在间隔时间发子弹
创建脚本,让其继承坦克基类
实现实例化子弹和让其知道打了谁

我们在子弹脚本中已经有一个setFather
Unity学习之坦克游戏制作(2)游戏场景的制作_第80张图片
实现开火函数
Unity学习之坦克游戏制作(2)游戏场景的制作_第81张图片

在UPdate中设置在间隔时间发射子弹
Unity学习之坦克游戏制作(2)游戏场景的制作_第82张图片

设定上这类坦克不会被 摧毁
所以重写受伤函数,让其在函数中什么都不做

Unity学习之坦克游戏制作(2)游戏场景的制作_第83张图片
拖入脚本到塔类坦克中,关联子弹

Unity学习之坦克游戏制作(2)游戏场景的制作_第84张图片
设置子弹打到塔类坦克会触发特效,并且不会穿过
加一个Tag
Unity学习之坦克游戏制作(2)游戏场景的制作_第85张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第86张图片

增加判断条件,如果阵营不相同,会触发子弹命中特效
Unity学习之坦克游戏制作(2)游戏场景的制作_第87张图片

Unity学习之坦克游戏制作(2)游戏场景的制作_第88张图片
判断是否受伤,通过里氏替换原则
Unity学习之坦克游戏制作(2)游戏场景的制作_第89张图片

9 移动的敌人

实现来回移动
坦克要一直盯着玩家
当目标到达一定范围内要攻击玩家

9.1 坦克移动

Unity学习之坦克游戏制作(2)游戏场景的制作_第90张图片

往randomPos 里增加几个点,增加一个函数,让坦克随机往这几个点移动
Unity学习之坦克游戏制作(2)游戏场景的制作_第91张图片

Unity学习之坦克游戏制作(2)游戏场景的制作_第92张图片
在Update函数里判断是否到达了另一个点
Unity学习之坦克游戏制作(2)游戏场景的制作_第93张图片
拖入脚本测试
创建两个空gameobject
Unity学习之坦克游戏制作(2)游戏场景的制作_第94张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第95张图片
拖入脚本中
Unity学习之坦克游戏制作(2)游戏场景的制作_第96张图片

9.2 坦克一直盯着玩家

在这里插入图片描述
Unity学习之坦克游戏制作(2)游戏场景的制作_第97张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第98张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第99张图片
当我和他的距离在一定范围内,会攻击玩家
Unity学习之坦克游戏制作(2)游戏场景的制作_第100张图片

重写Fire函数
由于坦克可能有几个开火点,跟tower一样设置炮口和子弹
Unity学习之坦克游戏制作(2)游戏场景的制作_第101张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第102张图片
关联发射点,并改变怪物标识

设置击败敌方并给玩家加分

Unity学习之坦克游戏制作(2)游戏场景的制作_第103张图片

10 怪物血条

Unity学习之坦克游戏制作(2)游戏场景的制作_第104张图片

在怪物脚本中直接创建
声明血条的背景 黑色部分 和血条剩余部分 白色部分

Unity学习之坦克游戏制作(2)游戏场景的制作_第105张图片
Unity学习之坦克游戏制作(2)游戏场景的制作_第106张图片

设置只有受伤才会显示血条
在这里插入图片描述
Unity学习之坦克游戏制作(2)游戏场景的制作_第107张图片

10 通关点

添加一个点
Unity学习之坦克游戏制作(2)游戏场景的制作_第108张图片
添加碰撞器
Unity学习之坦克游戏制作(2)游戏场景的制作_第109张图片
判断碰撞,让玩家通关
由于还没有通关界面,所以直接转到主菜单
Unity学习之坦克游戏制作(2)游戏场景的制作_第110张图片
拖入脚本

游戏场景自行构建

你可能感兴趣的:(unity,学习,游戏,笔记)