文章目录
- 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,进行场景的搭建
2. 游戏主面板
得分、血量、设置退出等
2.1 拼出面板
2.2 创建新面板
提供方法更新面板
通过帧间隔时间 进行累加 会比较准确
在Start函数中测试
2.3 设置面板复用
复用设置面板
直接从BeginScene中把root中的Setting面板复制,然后在GameScene的root中复制
在btn中增加监听界面
现在运行会报错,因为Music对象找不到
所以同时可以复用开始场景的背景音乐 ,把 开始场景的BKMusic拖过来直接用
但这时候还是会报错,在点击关闭的时候,之前的逻辑是显示主菜单的界面,但这里没有主菜单,所以报错
所以在SettingPanel 中,进行判断
2.4 退出界面
点击退出后,弹出确定面板
创建脚本
别忘了在GamePanel里面增加显示的监听事件
在打开游戏设置 和 退出游戏面板的时候,暂停时间的增加
在点击事件的时候,将时间缩放量改为0
在隐藏设置面板和退出面板的时候 将缩放量改回来
3. 坦克基类
3.1 创建基类脚本
3.1.1 基类基本属性
3.1.2 抽象开火函数
3.1.3 受伤虚函数
3.1.4 死亡虚函数
在死亡是Destory该对象 并且播放 相应的特效
创建gameobject用来关联特效
4 玩家——基础移动旋转摄像机跟随
4.1 玩家对象脚本
继承坦克基类
4.2 控制坦克移动
还有炮台旋转
由于敌人和玩家都能旋转炮台,所以在基类中添加成员属性
脚本拖入 场景中的玩家坦克,并关联头部
现在应该能WS前后移动 AD旋转 鼠标转动头部
4.3 先实现部分函数
4.4 设置摄像机跟随玩家
把摄像机拖到炮台上,并设置一下XYZ轴让其对准坦克的炮台
5 小地图
5.1 创建新的摄像机和贴图
拖入摄像机的目标贴图
拖入UI 的map 组件
5.2 控制摄像机移动的脚本
把Player 拖入 target中
6 武器和子弹对象
选择一个武器拖入玩家的Weapon槽中
武器炮口
也会有多个子弹的武器
6.1 武器脚本
关联预设体
在玩家脚本中 声明一个transform 来关联武器,命令武器发射
因为受伤函数需要知道 谁打得我,所以在武器脚本中关联下谁发射的子弹
6.2 子弹脚本
改变一下武器的预设体,由于不想动原有预设体,所以创建新的预设体
重新关联bullet
此时按发射能动起来
给子弹添加物理效果,并设置为触发器
会有往下落的效果
脚本中增加碰撞触发函数
创建新层级
把墙壁的层级都改为Cube
设置武器拥有者
让子弹在发射的时候计算伤害
设置子弹销毁时的特效
爆炸特效中有Audio Source组件
所以创建时改音效的音量和开启状态
6.3 武器奖励对象和获取特效
创建多个武器预设体
关联子弹
同理创建新子弹
6.3.1 随机武器
在做主页面时做过一个旋转的脚本,直接拖进来
运行时自动转
把这个做成触发器
创建武器奖励的脚本,让Player层的碰撞器碰到后就销毁自己
将武器预设体存储在脚本中,并随机给玩家发放武器
所以此时玩家应该拥有一个给外界提供的给自己切换武器的方法
到Player的脚本中增加
然后在Weapon中调用这个方法
在Player脚本中记录武器位置,让武器装载在这上面
6.4 属性奖励相关
套路和武器差不多
创建预设体拖入旋转脚本设置为Trigger
6.4.1 属性奖励脚本
给各个预设体批量添加该脚本,并设置Type
触发的事件
设置特效
7 可击毁箱子
7.1 箱子预设体
其中有一个碰撞器
7.2 脚本
1打到自己的子弹 应该销毁
2 打到箱子 随机创建奖励的逻辑
把箱子Tag改成cube,之前子弹逻辑中处理过打中cube自动销毁
关联奖励
为箱子销毁添加特效
在cube销毁自己前放特效
加上自动销毁AudioSource 的脚本
8 固定不动的敌人
拖入一个固定不动的敌人,让其头部自动旋转,在UI设计时我们已经写过头部旋转相关
让其在间隔时间发子弹
创建脚本,让其继承坦克基类
实现实例化子弹和让其知道打了谁
我们在子弹脚本中已经有一个setFather
实现开火函数
在UPdate中设置在间隔时间发射子弹
设定上这类坦克不会被 摧毁
所以重写受伤函数,让其在函数中什么都不做
拖入脚本到塔类坦克中,关联子弹
设置子弹打到塔类坦克会触发特效,并且不会穿过
加一个Tag
增加判断条件,如果阵营不相同,会触发子弹命中特效
判断是否受伤,通过里氏替换原则
9 移动的敌人
实现来回移动
坦克要一直盯着玩家
当目标到达一定范围内要攻击玩家
9.1 坦克移动
往randomPos 里增加几个点,增加一个函数,让坦克随机往这几个点移动
在Update函数里判断是否到达了另一个点
拖入脚本测试
创建两个空gameobject
拖入脚本中
9.2 坦克一直盯着玩家
当我和他的距离在一定范围内,会攻击玩家
重写Fire函数
由于坦克可能有几个开火点,跟tower一样设置炮口和子弹
关联发射点,并改变怪物标识
设置击败敌方并给玩家加分
10 怪物血条
在怪物脚本中直接创建
声明血条的背景 黑色部分 和血条剩余部分 白色部分
设置只有受伤才会显示血条
10 通关点
添加一个点
添加碰撞器
判断碰撞,让玩家通关
由于还没有通关界面,所以直接转到主菜单
拖入脚本
游戏场景自行构建