【游戏客户端】大话slg玩法架构(一)滚动基类

news2024/12/23 15:42:49

【游戏客户端】大话slg玩法架构(一)滚动基类

      大家好,我是Lampard家杰~~ 今天我们兑现诺言,给大家分享SLG玩法的实现j架构,关于SLG玩法的介绍可以参考这篇上一篇文章:【游戏客户端】制作率土之滨Like玩法

       PS:和之前一样,本文也只是分享实现思路,并不会贴具体的代码和资源哟

(一)架构总览

      SLG玩法的实现思路可以划分为四个部分,分别是滚动容器基类的搭建,背景大地图的实现,建筑的生成与刷新,以及玩法优化预加载相关

      OK,那么我们一步步开始与大家细细分享~~~

 

(二)滚动基类的实现

(1)scrollview滚动容器

      首先和大家说明一下,这款SLG是一个纯界面玩法,策划大佬希望它可以像背包一样随时打开关闭,且不影响原先的游戏流程

      因此在预演的时候我们有两套思路,第一是利用本身就自带滚动逻辑的scrollview实现滑动功能,然后把点击事件的监听放置在建筑上;第二是自己实现一个触摸层,滚动和点击的逻辑写在这个触摸层上,建筑仅作为显示用途

    后面由于考虑到scrollview支持多方向滑动,且玩法本身的点击事件都是发生在与建筑交互的过程,因此我们采取了第一种做法

 

(2)尺寸与大小

      关于这个容器有两个尺寸大小需要我们设置的,其一是显示的尺寸(也就是应用实机的分辨率),由于玩法需要铺满整个屏幕,因此我们需要对SV的尺寸通过setSize的接口来设置成实际的size

      然后第二个就是InnerContainer的尺寸,此时肯定有部分同学不知道这InnerContainer是啥东西,遇事不决问GPT同学

Q : 什么是InnerContainer ?

A:在 Cocos2d-x 游戏引擎中,InnerContainer 是 ScrollView 控件的一个内部容器,用于容纳 ScrollView 中的子节点。ScrollView 是一个可滚动的视图容器,InnerContainer 则是这个滚动视图的内部容器,负责承载实际的滚动内容,并响应用户的滚动操作。

      简单来说这个SV就好像一个望远镜,我们透过镜头可以看到前面有两棵树,而InnerContainer则是整片树林,我们可以通过调整镜头的位置来观看树林的全貌

       那么这片树林究竟有多大呢?这取决于策划和美术大佬的设计啦,假设这是一个十行十列的大地图,一个地图的大小为1000像素,那么这个InnerContainer的大小就是10000 * 10000了

      我们可以通过setInnerContainerSize的接口设置其大小

(3)跳转与滚动

      那此时们需要实现跳转和滚动功能就很简单了,比如说我们想跳转到第二列第一行的地图块位置(2,1),按上述的地图尺寸假设值,那么只需要设置innerContainer的位置为(- 2 * 1000, - 1 * 1000)即可

    为什么是负数呢?是因为SV实际是不动的,而0.0是innerContainer的左下角位置,因此我们SV“镜框”不动的情况下,想看右上方的内容,那只能让"树林“往坐下角移动了

    因此我们就可以很简单的包装一个jumpTo接口实现跳转功能

-- 界面跳转至某一地图块
function jumpTo(Idx, Idy)
    ......
	local PanelPosX = -Idx * 地块长度
	local PanelPosY = -Idy * 地块高度
	self.SV:getInnerContainer():setPosition(PanelPosX, PanelPosY)
    ......
end

      而滚动就更简单了~~比如说需要从(1.1)滚动至(1. 2),我们掐指一算发现只需要把    innerContainer往左移动1000像素,那么我们就可以启用一个计时器,让innerContainer每帧移动1000 / 移动需要的帧数即可

 

      好啦~~滚动基类的介绍大概就到这里,下一篇文章会介绍这个背景地图的实现

      感谢阅读,记得点赞和关注!!!

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

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

相关文章

React -- useState状态更新异步特性——导致获取值为旧值的问题

useState状态异步更新 问题导致的原因解决办法进一步分析后续遇到的新问题 问题 const [isSelecting, setIsSelecting] useState(false);useEffect(() > {const handleKeyDown (event) > {if (event.key Escape) {if(isSelectingRef){//.......setIsSelecting(!isSele…

项目机会:4万平:智能仓,AGV,穿梭车,AMR,WMS,提升机,机器人……

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。 如下为近期国内智能仓储物流相关项目的公开信息线索,这些项目具体信息会发布到知识星球,请感兴趣的球友先人一步到知识星球【智能仓储物流技术研习社】自行下载…

LeetCode热题100刷题9:25. K 个一组翻转链表、101. 对称二叉树、543. 二叉树的直径、102. 二叉树的层序遍历

25. K 个一组翻转链表 /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListNode *next) : val(x), nex…

Java | Leetcode Java题解之第223题矩形面积

题目: 题解: class Solution {public int computeArea(int ax1, int ay1, int ax2, int ay2, int bx1, int by1, int bx2, int by2) {int area1 (ax2 - ax1) * (ay2 - ay1), area2 (bx2 - bx1) * (by2 - by1);int overlapWidth Math.min(ax2, bx2) -…

代发考生战报:南京考场华为售前HCSP H19-411考试通过

代发考生战报:南京考场华为售前HCSP H19-411考试通过,客服给的题库非常稳定,考试遇到2个新题,剩下全是题库里的原题,想考的放心考吧,考场服务挺好,管理员带着做签名和一些考试说明介绍清楚&…

C++相关概念和易错语法(16)(list)

1.list易错点 (1)慎用list的sort,list的排序比vector慢得多,尽管两者时间复杂度一样,甚至不如先把list转为vector,用vector排完序后再转为list (2)splice是剪切链表,将…

AGAST (角点检测)

AGAST检测原理 AGAST(Adaptive and Generic Accelerated Segment Test)算法是Elmar于2010年提出的特征检测算法,改进了FAST(Features from Accelerated Segment Test)特征检测方法,使其具有更快的速度和更好的鲁棒性。AGAST算法提供了比FAST算法更详细的特征标记方式和判断依…

读人工智能全传07智能体

1. 布鲁克斯革命 1.1. 随着科学认知的发展,有时候旧有科学体系会面临全盘崩溃的危机,新的科学体系诞生,取代传统的、既定的科学体系,这就意味着科学的范式将发生变化 1.2. 澳大利亚机器人学家罗德尼布鲁克斯(Rodney Brooks)&…

vue3+ el-tree 展开和折叠,默认展开第一项

默认第一项展开: 展开所有项&#xff1a; 折叠所有项&#xff1a; <template><el-treestyle"max-width: 600px":data"treeData"node-key"id":default-expanded-keys"defaultExpandedKey":props"defaultProps"…

Qt creator 控件转到槽 报错 The class containing “Ui:Dialog“ could not be found in

今天调试程序&#xff0c;发现主界面控件转到槽&#xff0c;报错如下图&#xff1a; 问题表现为&#xff1a;只有主窗口控件有这个错误&#xff0c;其他子窗口正常。 解决&#xff1a; 在网上搜这个报错信息&#xff0c;都没有一个很好的解决办法。 最后发现是我在子窗口中要…

004-基于Sklearn的机器学习入门:回归分析(下)

本节及后续章节将介绍机器学习中的几种经典回归算法&#xff0c;包括线性回归&#xff0c;多项式回归&#xff0c;以及正则项的岭回归等&#xff0c;所选方法都在Sklearn库中聚类模块有具体实现。本节为下篇&#xff0c;将介绍多项式回归和岭回归等。 2.3 多项式回归 在一般的…

Visual Studio Code 教程 VsCode安装Live Server以服务形式打开html

搜索Live Server 插件,然后安装 选一个html文件&#xff0c;右键点击 Open with live server,然后就自动弹出来了

怎样优化 PostgreSQL 中对日期时间范围的模糊查询?

文章目录 一、问题分析&#xff08;一&#xff09;索引未有效利用&#xff08;二&#xff09;日期时间格式不统一&#xff08;三&#xff09;复杂的查询条件 二、优化策略&#xff08;一&#xff09;使用合适的索引&#xff08;二&#xff09;规范日期时间格式&#xff08;三&a…

北森锐途人才竞聘盘点管理测评:高管领导力六大评判标准深度解析万达商管中国绿发等

北森锐途人才管理测评&#xff1a;高管领导力评判标准深度解析 在企业高管的盘点与竞聘测评领域&#xff0c;众多管理人才面临评估自身领导力的挑战。面对能力卓越、职级显赫的同僚&#xff0c;许多管理者感到缺乏一套权威且专业的评价体系。然而&#xff0c;无论是天赋异禀的领…

Html5前端基本知识整理与回顾上篇

今天我们结合之前上传的知识资源来回顾学习的Html5前端知识&#xff0c;与大家共勉&#xff0c;一起学习。 目录 介绍 了解 注释 标签结构 排版标签 标题标签 ​编辑 段落标签 ​编辑 换⾏标签 ​编辑 ⽔平分割线 ⽂本格式化标签 媒体标签 绝对路径 相对路径 …

Chromium编译指南2024 Linux篇-安装官方工具depot_tools(二)

1.引言 在上一节中&#xff0c;我们已经完成了 Git 的安装&#xff0c;并了解了其在 Chromium 编译过程中的重要性。接下来&#xff0c;我们将继续进行环境的配置&#xff0c;首先是安装和配置 Chromium 编译所需的重要工具——depot_tools。 depot_tools 是一组用于获取、管…

怎样优化 PostgreSQL 中对布尔类型数据的查询?

文章目录 一、索引的合理使用1. 常规 B-tree 索引2. 部分索引 二、查询编写技巧1. 避免不必要的类型转换2. 逻辑表达式的优化 三、表结构设计1. 避免过度细分的布尔列2. 规范化与反规范化 四、数据分布与分区1. 数据分布的考虑2. 表分区 五、数据库参数调整1. 相关配置参数2. 定…

linux工具应用_GVIM

gvim 1. introduction1.1 **gvim的功能(选择用gvim的原因)**1.2 模式及切换1.2.1 normal1.2.2 insert1.2.3 visual1.2.4 command2. gvim配置-vimrc2.1 什么是vimrc2.2 配置修改及理解2.2.1 基本修改2.2.2 UI 相关配置2.2.3 编码相关配置2.3.4 文件相关配置2.3.5 编辑器相关配…

用Conda配置 Stable Diffusion WebUI 1.9.4

用Conda配置 Stable Diffusion WebUI 1.9.4 本文主要讲解: 如何用Conda搭建Stable Diffusion WebUI 1.9.4环境&#xff0c;用Conda的方式安装&#xff0c;不需要单独去安装Cuda了。 1. 安装miniconda https://docs.anaconda.com/free/miniconda/index.html 2. 搭建虚拟环境…

Java设计模式---(创建型模式)工厂、单例、建造者、原型

目录 前言一、工厂模式&#xff08;Factory&#xff09;1.1 工厂方法模式&#xff08;Factory Method&#xff09;1.1.1 普通工厂方法模式1.1.2 多个工厂方法模式1.1.3 静态工厂方法模式 1.2 抽象工厂模式&#xff08;Abstract Factory&#xff09; 二、单例模式&#xff08;Si…