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


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 通关点

添加一个点
在这里插入图片描述
添加碰撞器
在这里插入图片描述
判断碰撞,让玩家通关
由于还没有通关界面,所以直接转到主菜单
在这里插入图片描述
拖入脚本

游戏场景自行构建

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值