政安晨【示例演绎虚拟世界开发】(五):从制作一个对战小游戏开始(Cocos Creator 《击败老大》)(第二段)

news2024/11/16 19:45:11

政安晨的个人主页政安晨

欢迎 👍点赞✍评论⭐收藏

收录专栏: AI虚拟世界大讲堂

希望政安晨的博客能够对您有所裨益,如有不足之处,欢迎在评论区提出指正!

现在我们已经学会了如何向场景中添加图片,接下来继续为游戏场景添加更多的元素,并进一步完善场景布局。


修改游戏设计分辨率

在通常情况下,为了方便场景的搭建工作,在开发游戏之前会选择一个合适的分辨率来作为蓝本,并以此为基础进行整体界面的搭建,而作为蓝本的分辨率也被称为设计分辨率。在咱们这篇文章中,我们将采用比较主流的1280px×720px分辨率。

根据前面预览运行的效果,不难发现预览运行时展示的内容区域与编辑器中的Canvas区域是一致的。

这个时候我们会很自然地联想到,如果直接修改Canvas的尺寸,或许就可以达到间接修改设计分辨率的目的。

当我们尝试在层级管理器中选中【Canvas】节点时

会发现节点下的UI变换组件的【ContentSize】有一个“锁”图标,输入框也是灰色的,因此我们并不能直接对该属性进行修改,如下图所示。

在Cocos Creator中,如果想要修改游戏中的分辨率,则需要在项目设置中进行统一配置。在编辑器顶部选择【项目】→【项目设置】命令,打开项目设置面板,在【项目数据】选项卡中可以直接修改游戏的设计分辨率,如下图所示。

现在将【设计宽度】和【设计高度】的值分别修改为【720】和【1280】,修改完成后回到场景,再次选中【Canvas】组件,此时我们会发现游戏场景区域的宽高比已经发生了变化,同时Canvas里的UI变换组件的属性也同步发生了改变,如下图所示。

上述为同步变化的UI变换组件的属性

这里需要注意的是,此时游戏的设计分辨率已经产生了变化,当我们再次预览运行时,可能游戏区域超出了浏览器的显示范围,浏览器可能会有显示不全并且出现滚动条的情况(看浏览器的情况),如下图所示。

如果游戏区域超出了浏览器的显示范围,可以通过Chrome预览窗口左上角的下拉菜单调整预览分辨率,根据实际需求选择一个合适的分辨率即可。

使用变换工具

在搭建游戏场景的过程中,经常会有对节点进行移动、旋转、缩放等操作的需求,这个时候我们可以通过主窗口左上角工具栏的变换工具来操作场景中的相关节点。工具栏中从左往右依次为移动变换工具、旋转变换工具、缩放变换工具、矩形变换工具、变换吸附设置,如下图所示。

在默认状态下,移动变换工具是处于激活状态的,在层级管理器中选中需要移动的节点,就可以使用移动变换工具来对当前节点进行移动了。如果移动变换工具并没有处于激活状态,那么我们也可以通过点击工具栏的第一个按钮进行激活,或者使用组合键“Ctrl+W”,将变换工具切换为移动变换工具。

在确保移动变换工具被激活后,我们可以通过移动鼠标将【enemy】节点拖动到游戏场景的上方。如果仔细观察将会发现,在移动的过程中,【enemy】节点上的【Position】属性也会随之变化,这说明移动变换工具会在我们操作时动态地修改节点坐标的位置,如下图所示。

依次将三个技能图标及重新开始图标拖动到游戏场景中,之后使用同样的方式操作移动变换工具,将图标调整到合适的位置,完成后如下图所示。

父节点与子节点变换关系

在通常情况下,场景中的节点会以树状结构呈现。每个节点都可以有多个子节点,而子节点的更新依赖于父节点,当父节点进行变换时子节点会随之变换。我们可以利用这个特性间接地批量调整子节点的位置。

在了解了这一特性后,我们继续在场景中添加敌人的招式图标。首先在【Canvas】节点下新建一个空节点并命名为【enemy_skill】,然后在【enemy_skill】下依次添加三个技能的图片作为其子节点,最后只需要使用移动变换工具操作【enemy_skill】节点,即可完成所有技能图标的整体移动,完成后如下图所示。

节点的遮挡关系

我们已经向enemy_skill中添加了三个节点,由于它们的坐标默认重叠在了一起,因此我们只能看到一个图标,但是为什么看到的是最后一个添加的盾牌图标呢?

这是因为在Cocos Creator中,UI节点的渲染和遮挡关系会受到节点树的影响,从而按照层级管理器中节点的排列顺序从上到下依次渲染,也就是说在列表上面的节点在场景显示中会被在列表下面的节点遮盖住。我们向enemy_skill中添加了三个节点,由于默认状态下它们的坐标是一致的,且盾牌图标的节点处于最下方,因此我们只看到了盾牌图标。

现在可以尝试修改enemy_skill子节点的顺序来观察遮挡关系的变化。例如,可以将代表盾牌的2号节点移动到流星锤的上方,由于节点的排列顺序发生了变化,因而遮挡关系也会随之改变,可以看到此时流星锤图标已经显示了出来,如下图所示。

添加提示文本

我们制作的游戏场景比较简单,为了能够向玩家反馈游戏结果,还需要在游戏中添加提示文本信息。这里我们可以使用Label组件,右击【Canvas】节点,在弹出的快捷菜单中选择【创建】→【2D对象】→【Label(文本)】命令,创建一个Label组件,并将其命名为【hint】。可以在属性检查器中看到Label组件的相关属性,如下表所示。

在属性检查器中将Label的【FontSize】【LineHeight】属性的值都修改为【40】,之后将【String】属性修改为【出招中...】,如下图所示。


这一段咱们已经完成,接下来的文章中,我们继续。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Django路由层(反向解析、路由分发、命名空间、路径转换)

Django路由层(反向解析、路由分发、命名空间、路径转换) 目录 Django路由层(反向解析、路由分发、命名空间、路径转换)路由配置反向解析前端用法后端用法 反向解析的本质路由分发用法示例 分发时遇到的问题解决方案1解决方案2 命名…

过于老旧的pytorch_ssim包 请从github下载源码

有些冷门算法真的不要随便pip,有可能下载到史前版本…最好还是找源代码 汗 今天要用到SSIM损失函数,从网上简单看了一下原理就想测试一下,偷了一下懒就直接在命令行输入pip install pytorch_ssim了,结果报了一堆错误(汗…

vue3编写H5适配横竖屏

具体思路如下&#xff1a; 1、监听浏览器屏幕变化&#xff0c;通过监听屏幕宽高&#xff0c;辨别出是横屏&#xff0c;还是竖屏状态 在项目的起始根页面进行监听&#xff0c;我就是在App.vue文件下进行监听 代码如下&#xff1a; <template><RouterView /> <…

【MySQL】:约束全解析

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; MySQL从入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f4d1;前言一. 约束概述二. 约束演示三. 外键约束3.1 介绍3.2 语法3.3 删除/更新行为 &…

Ribbon负载均衡(黑马学习笔记)

上Eureka一节中&#xff0c;我们添加了LoadBalanced注解&#xff0c;即可实现负载均衡功能&#xff0c;这是什么原理呢&#xff1f; 负载均衡原理 SpringCloud底层其实是利用了一个名为Ribbon的组件&#xff0c;来实现负载均衡功能的。 那么我们发出的请求明明是http://users…

文献阅读:The Unreasonable Effectiveness of Easy Training Data for Hard Tasks

文献阅读&#xff1a;The Unreasonable Effectiveness of Easy Training Data for Hard Tasks 1. 文章简介2. 方法介绍 1. 数据集难易度分析2. 模型训练前后变化 3. 实验考察 & 结论 1. 实验设计 1. 使用数据集2. 使用模型 2. 实验结果 1. 数据集难度分析2. 在Easy数据集下…

迭代器模式:分离遍历逻辑与数据结构,实现统一访问接口与灵活扩展

文章目录 一、引言二、应用场景与技术背景三、模式定义与实现四、优缺点分析总结&#xff1a; 一、引言 ​ 迭代器模式&#xff08;Iterator Pattern&#xff09;是一种行为型设计模式&#xff0c;它提供了一种方法顺序访问聚合对象的元素&#xff0c;而又不暴露其底层表示。迭…

SaaS 电商设计 (九) 动态化且易扩展的实现购物车底部弹层(附:一套普适的线上功能切量的发布方案)

目录 一.背景1.1 业务背景1.2 技术负债 二.技术目标三.方案设计3.1 解决移动端频繁发版3.1.1 场景分析3.1.2 技术方案 3.2 减少后端坏味道代码&无法灵活扩展问题3.2.1 通过抽象接口完成各自单独楼层渲染逻辑3.2.2 通过配置能力做到部分字段可配 四.升级上线(普适于高并发大…

NoSQL--2.MongoDB配置

目录 2.MongdoDB配置 2.1 Windows环境下操作 2.1.1 注册MongDB Atlas&#xff1a; 2.1.2 MongoDB Community Server Download&#xff1a; 2.1.3 启动MondgoDB服务&#xff1a; 2.1.3.1 命令行参数的方式启动MongoDB服务&#xff1a; 2.1.3.2 使用配置文件方式启动Mongo…

Python算法100例-3.4 完数

完整源代码项目地址&#xff0c;关注博主私信源代码后可获取 1.问题描述2.问题分析3.算法设计4.确定程序框架5.完整的程序6.问题拓展 1&#xff0e;问题描述 求某一范围内完数的个数。 如果一个数等于它的因子之和&#xff0c;则称该数为“完数”&#xff08;或“完全数”&…

C#中多语言编程原理及实例解析

文章目录 一、了解C#多语言编程原理1. 通用语言运行库&#xff08;CLR&#xff09;2. 通用类型系统&#xff08;CTS&#xff09;3. 微软中间语言&#xff08;MSIL&#xff09;4. 元数据和反射5. 公共语言规范&#xff08;CLS&#xff09; 二、实例说明 一、了解C#多语言编程原理…

Linux笔记--用户与用户组

Linux系统是一个多用户多任务的操作系统&#xff0c;任何一个要使用系统资源的用户&#xff0c;都必须首先向系统管理员(root)申请一个账号&#xff0c;然后以这个账号的身份进入系统。 用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪&#xff0c;并控制他们对系…

MIT-BEVFusion系列九--CUDA-BEVFusion部署6 前向推理的数据加载与图像预处理

目录 加载图像数据加载点云数据模型推理并计时预热操作模型推理检查点云输入数据量打印信息中CopyLidar部分的计算和耗时打印信息中ImageNrom图像预处理部分计算和耗时 该系列文章与qwe、Dorothea一同创作&#xff0c;喜欢的话不妨点个赞。 接上面的文章&#xff0c;目光聚焦回…

为啥要用C艹不用C?

在很多时候&#xff0c;有人会有这样的疑问 ——为什么要用C&#xff1f;C相对于C优势是什么&#xff1f; 最近两年一直在做Linux应用&#xff0c;能明显的感受到C带来到帮助以及快感 之前&#xff0c;我在文章里面提到环形队列 C语言&#xff0c;环形队列 环形队列到底是怎么回…

数据结构——lesson5栈和队列详解

hellohello~这里是土土数据结构学习笔记&#x1f973;&#x1f973; &#x1f4a5;个人主页&#xff1a;大耳朵土土垚的博客 &#x1f4a5; 所属专栏&#xff1a;数据结构学习笔记 &#x1f4a5;对于顺序表链表有疑问的都可以在上面数据结构的专栏进行学习哦~感谢大家的观看与…

ElasticSearch相关知识点

ElasticSearch相关知识点 1.了解ES ES的作用&#xff1a;ES是一款非常强大的开源搜索引擎&#xff0c;具备非常多强大功能&#xff0c;可以帮助我们从海量数据中快速找到需要的内容 ELK技术栈&#xff1a;ES结合kibana、Logstash、Beasts&#xff0c;也就是 elastic stack 。…

NoSQL--1.虚拟机网络配置

目录 1.初识NoSQL 1.1 NoSQL之虚拟机网络配置 1.1.1 首先&#xff0c;导入预先配置好的NoSQL版本到VMware Workstation中 1.1.2 开启虚拟机操作&#xff1a; 1.1.2.1 点击开启虚拟机&#xff1a; 1.1.2.2 默认选择回车CentOS Linux&#xff08;3.10.0-1127.e17.x86_64) 7 …

小白必看的Python函数讲解

定义函数 我们通过斐波那契数列来理解定义函数 >>> def fib(n): # 将斐波那契数列打印到 n ... """将斐波那契数列打印到 n""" ... a, b 0, 1 ... while a < n: ... print(a, end ) ... a, b b, …

IPC资源在linux内核中如何管理

1.先看各个通信的接口 1.共享内存接口 2.消息队列接口 3.信号量接口 2.管理他们的结构体&#xff1a; 其实管理他们的是一个数组&#xff0c;和open返回的fd差不多&#xff0c;shmid&#xff0c;msqid,semid的大小都是这个数组的下标。那数组的结构是什么呢&#xff1f; 然后…

hive中spark SQL做算子引擎,PG作为MetaDatabase

简介 hive架构原理 1.客户端可以采用jdbc的方式访问hive 2.客户端将编写好的HQL语句提交&#xff0c;经过SQL解析器&#xff0c;编译器&#xff0c;优化器&#xff0c;执行器执行任务。hive的存算都依赖于hadoop框架&#xff0c;所依赖的真实数据存放在hdfs中&#xff0c;解析…