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,进行场景的搭建
在这里插入图片描述

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

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

游戏场景自行构建

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/349316.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Docker】实战案例 - CI/CD

作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! CI/CD 持续集成(Continuous integration) 是一种软件开发实践,每次集成都通过自动化的构建(包括编译,发…

Dockerfile里ADD * 保留原来的目录结构

1、问题 给新模块写Dockerfile,很多静态资源分散在各个目录,于是Dockerfile里我直接一句: ADD ./* /dest/镜像出来后,启动容器,进入容器种后发现:文件拷贝成功,但原来的目录结构都不在了&…

Rabbitmq调用FeignClient接口失败

文章目录 一、框架及逻辑介绍1.背景服务介绍2.问题逻辑介绍 二、代码1.A服务2.B服务3.C服务 三、解决思路1.确认B调用C服务接口是否能正常调通2.确认B服务是否能正常调用A服务3.确认消息能否正常消费4.总结 四、修改代码验证1.B服务异步调用C服务接口——失败2.将消费消息放到C…

2024水资源、智慧城市与绿色发展国际会议(ICWRSCGD 2024)

2024水资源、智慧城市与绿色发展国际会议(ICWRSCGD 2024) 会议简介 2024年国际水资源、智慧城市与绿色发展大会(ICWRSCGD 2024)将在中国杭州举行。会议聚焦“水资源、智慧城市、绿色发展”这一最新研究领域,致力于促进世界顶级创新者、科学…

01 Redis的特性+下载安装启动

1.1 NoSQL NoSQL(“non-relational”, “Not Only SQL”),泛指非关系型的数据库。 键值存储数据库 : 就像 Map 一样的 key-value 对。如Redis文档数据库 : NoSQL 与关系型数据的结合,最像关系…

代码随想录算法训练营第十一天 | 二叉树基础

代码随想录算法训练营第十一天 | 二叉树基础 文章目录 代码随想录算法训练营第十一天 | 二叉树基础1 二叉树的理论基础1.1 二叉树的类型1.2 二叉树的存储方式1.3 二叉树的遍历方式1.4 二叉树的定义 2 二叉树的递归遍历2.1 前序遍历2.2 中序遍历2.3 后序遍历 3 二叉树的迭代遍历…

C++特殊类的设计

目录 一、不能被拷贝的类 二、只能在堆上创建对象的类 三、只能在栈上创建对象的类 四、不能被继承的类 五、只能创建一个对象的类(单例模式) 下面说几种特殊要求的类的设置,主要学习其中所运用的一些思想,融会贯通 一、不能被拷贝的类 C98可以将拷…

高质量谷歌seo外链平台有哪些?

明确的说,没有任何必要,这里说的没必要指的是没必要寻找什么高质量的外链平台 所谓高质量的外链平台是什么?你期待在这种平台发外链能获得什么效果?高质量的外链平台,无非就是网站排名高,能发相关的外链的平…

iOS推送通知

文章目录 一、推送通知的介绍1. 简介2. 通知的分类 二、本地通知1. 本地通知的介绍2. 实现本地通知3. 监听本地通知的点击 三、远程通知1. 什么是远程通知2. 为什么需要远程通知3. 远程通知的原理4. 如何做远程通知5. 远程通知证书配置6. 获取远程推送要用的 DeviceToken7. 测试…

外贸SOHO产品怎么选?海洋建站选品方法?

外贸SOHO应该如何选产品?跨境电商独立站选品策略? 越来越多的人选择通过外贸SOHO创业,将业务拓展到国际市场。然而,面对琳琅满目的外贸SOHO产品,许多初创企业主可能会感到困惑。海洋建站将为您提供一些建议&#xff0…

直播核心岗位基础内容

一.直播间核心岗位 1.直播间前端岗位 前端岗位分工 (1)主播岗位职责 (2)场控岗位职责 (3)助理岗位职责 中端岗位分工 (1)运营岗位职责 (2)中控岗位职责 …

2024年Java SpringBoot 计算机软件毕业设计题目推荐

博主介绍:✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老师/讲师/同行交流合作✌ 主要内容:SpringBoot、Vue、SSM、HLM…

Hbuilder从gitlab上面拉取项目

要先下载TortoiseGit-2.15.0.0-64bit这个软件 在HBuilder中从GitLab上拉取项目,请按照以下步骤操作: 1. 打开HBuilder,点击左上角的“文件”菜单,然后选择“新建”->“项目”。 2. 在弹出的对话框中,选择“从Git导…

解决 [Vue warn]:Avoid mutating a prop directly 警告

错误信息 [Vue warn]: Avoid mutating a prop directly since the value will be overwritten whenever the parent component re-renders. Instead, use a data or computed property based on the prop’s value. Prop being mutated: “xxx” 错误原因 所有的 prop 都使得…

vue中使用canvas给图片绘制水印,即使下载图片也是带水印的

先看效果 话不多说直接上组件 1、Watermark.vue <template><div><canvas ref"canvas" :width"width" :height"height"></canvas></div> </template><script>export default {props: {// 图片地址ur…

Java服务端使用freemarker+wkhtmltoimage生成Echart图片

目录 1.通过 freemarker 将ftl转成html 1.1 freemarker 手册: 1.2 添加freemarker maven依赖 1.3 添加 echart-test.ftl 模版文件 1.4 添加 FreemarkerTool 工具类 1.5 添加测试main方法 1.6 运行,生成echart-test-时间戳.html 文件 2. 通过wkhtmltoimage将html 转为p…

【复现】JieLink+智能终端操作平台弱口令漏洞_28

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一&#xff1a; 四.修复建议&#xff1a; 五. 搜索语法&#xff1a; 六.免责声明 一.概述 JeLink智能终端操作平台 (JSOTC2016 fJeLink)是捷顺历经多年行业经验积累&#xff0c;集智能硬件技术视频分析技术、互联网技术等…

【HarmonyOS应用开发】ArkTS基础知识(三)

一、浅析ArkTS的起源和演进 1、引言 Mozilla创造了JS&#xff0c;Microsoft创建了TS&#xff0c;Huawei进一步推出了ArkTS。 从最初的基础的逻辑交互能力&#xff0c;到具备类型系统的高效工程开发能力&#xff0c;再到融合声明式UI、多维状态管理等丰富的应用开发能力&#xf…

如何解决服务器端口被占用的问题,减少带来的影响

在现代网络环境中&#xff0c;服务器扮演着至关重要的角色&#xff0c;其稳定性和安全性对企业的正常运营具有重要意义。然而&#xff0c;服务器端口被占用的问题却时常困扰着企业网络管理员。本文将深入探讨服务器端口被占用的影响&#xff0c;并提出相应的解决方案。 一、服务…

大数据学习之Redis、从零基础到入门(二)

二、Redis安装配置 1. VMWare本地虚拟机 VMWare准备的为64位 查看自己的VMWare是32位还是64位 getconf LONG_BIT 2. Redis的安装 2.1 系统选择 选择Linux系统 2.2 Linux版安装 2.2.1 Linux环境安装Redis必须先具备gcc编译环境 ①什么是gcc gcc是linux下的一个编译程序&…