coco creator 3.x: 居中展示

news2024/9/23 19:58:48

coco creator 3.x 里面有很多需要居中处理,下面积累记录一些日常的实验。
下面一张图如下,在这张图里面创建了一个3x3的展示。但是这个展示过程并不在居中展示。而它的容器节点 恰恰就在中心点位置。所以在创建后,布局预制体元素并不能实现居中的视觉。那样,我们只需要将里面元素偏移一个值即可计算处理这样效果。
在这里插入图片描述

import { instantiate } from 'cc';
import { Label } from 'cc';
import { Vec3 } from 'cc';
import { Prefab } from 'cc';
import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('PosTest')
export class PosTest extends Component {

   @property(Prefab)
   public perfab:Prefab

    start() {
        this.init();

    }

    private init(){
        
        for(var i = 0; i < 4; i++){
            for(var j = 0; j < 4; j++){
                var item = instantiate(this.perfab);
                item.position = new Vec3(j* 102, -i*102);
                item.getChildByName("nameTxt").getComponent(Label).string = i+","+j;
                item.parent = this.node;
            }
        }       
    }

    update(deltaTime: number) {
        
    }
}



实验过程:对每一个元数进行位置偏移。

第一步想到的是将每一个元素都移动一个相同的位置值计算出要移动多少才能居中。

要居中,只要算出两点之间距离,再除以一半就能得出要的结果。

假设一:下面图中方块宽高为 100x100 ,在没有间隙和偏移的情况 刚好总宽为4x100 = 400的值,按除以一半即可偏移到居中位置了。

但是由于方块的锚点在居中位置。所以真正的计算方块的距离不能以左下角的角度去算了。这个时候,只需要 减去1个方块宽,即可计算出两点距离了。

假设二没有间隙的计算: 4x100 - 100 = (4 -1)*100 / 2 这个就是能算出在没有间隙的情况。

假设三带上间隙的计算,间隙为2 : 4x100 - 100 + (4-1)*2 = (4-1)*100+ (4-1)2 = (4-1) 102 这个就是正式的距离了,再除以2 即可获得居中了。
在这里插入图片描述

import { instantiate } from 'cc';
import { Label } from 'cc';
import { Vec3 } from 'cc';
import { Prefab } from 'cc';
import { _decorator, Component, Node } from 'cc';
const { ccclass, property } = _decorator;

@ccclass('PosTest')
export class PosTest extends Component {

   @property(Prefab)
   public perfab:Prefab

    start() {
        this.init();

    }

    private init(){
        
        //居中位置  =( |开始点pos - 结束点pos| + (长度-1)*间缝隙) / 2
        //(4-1) * 100 + (4-1) * 2 

        for(var i = 0; i < 4; i++){
            for(var j = 0; j < 4; j++){
                var item = instantiate(this.perfab); //瞄点在居中
                var offx = ((4-1) * 102)/2;
                var offy = ((4-1) * 102)/2;
                item.position = new Vec3(j* 102-offx, -i*102+offy);
                item.getChildByName("nameTxt").getComponent(Label).string = i+","+j;
                item.parent = this.node;
            }
        }       
    }

    update(deltaTime: number) {
        
    }
}



以上通过计算获取到了位置,有时候我们希望0 0点位置在下面,而其他点位置在上面。这个时候通过改变方向接口。

在这里插入图片描述
修改 item.position = new Vec3(j 102-offx, i*102-offy)*;这行代码 让位置向下移动,则0,0位置就在底部了。

  for(var i = 0; i < 4; i++){
            for(var j = 0; j < 4; j++){
                var item = instantiate(this.perfab); //瞄点在居中
                var offx = ((4-1) * 102)/2;
                var offy = ((4-1) * 102)/2;
                item.position = new Vec3(j* 102-offx, i*102-offy);
                item.getChildByName("nameTxt").getComponent(Label).string = i+","+j;
                item.parent = this.node;
            }
        }       

好了,以上就是一个cocos 很常见问题,当元素预制体锚点在居中,但是同时分布的元素也要整体计算对应,达到居中展示视觉效果。这也是很常见一种计算方式了。同时由于有间隙距离,需要考虑到间隙的对居中点的影响。整体而言。简单计算2点中心点位置就可以很容易解决上述视觉问题。

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

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

相关文章

Docker容器初始

华子目录 docker简介虚拟化技术硬件级虚拟化硬件级虚拟化历史操作系统虚拟化历史基于服务的云计算模式 什么是dockerDocker和传统虚拟化方式的不同之处为什么要使用docker&#xff1f;Docker 在如下几个方面具有较大的优势 对比传统虚拟机总结docker应用场景docker改变了什么 基…

iOS开发 - 转源码 - __weak问题解决

iOS开发 - 转源码 - __weak问题解决 在使用clang转换OC为C代码时&#xff0c;可能会遇到以下问题 cannot create __weak reference in file using manual reference 原因 __weak弱引用是需要runtime支持的&#xff0c;如果我们还只是使用静态编译&#xff0c;是无法正常转换的…

MultiArch与Ubuntu/Debian 的交叉编译

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;基于ARM 的Linux系统的交叉编译 下一篇&#xff1a;MultiArch与Ubuntu/Debian 的交叉编译 警告&#xff1a; 本教程可能包含过时的信息。 什么是“MultiArch” OpenCV 可能…

家乡特色推荐系统设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)

本项目包含可运行源码数据库LW&#xff0c;文末可获取本项目的所有资料。 推荐阅读100套最新项目 最新ssmjava项目文档视频演示可运行源码分享 最新jspjava项目文档视频演示可运行源码分享 最新Spring Boot项目文档视频演示可运行源码分享 2024年56套包含java&#xff0c;…

flink join的分类

带窗口的join 下图是固定窗口,同样的还有滑动窗口和会话窗口join DataStream<Integer> orangeStream = ...; DataStream<Integer> greenStream = .

物联网应用技术中的stm32该怎么学,该从哪入手?

物联网应用技术中的stm32该怎么学&#xff0c;该从哪入手&#xff1f; STM32是只物联网中的一部分&#xff0c;单纯的学个STM32是没法满足物联网开发需求的&#xff0c;实际产品开发过程中会考虑成本等多种因素选择合适的方案&#xff0c;比如使用单片机还是stm32或是更高端的芯…

上位机图像处理和嵌入式模块部署(qmacvisual点线测量)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 上面一篇文章&#xff0c;我们完成了直线的拟合操作。在实际场景中&#xff0c;拟合之后更多地是需要进行长度的测量。既然是测量&#xff0c;那么…

Linux:传输层和UDP的传输原理

文章目录 端口号端口号理解端口号的划分 netstatUDP协议 之前结束了对于应用层的理解&#xff0c;那么从本篇开始往后&#xff0c;将会深入到传输层当中进行理解&#xff0c;尝试打通整个网络的协议栈 从对于之前的理解来说&#xff0c;在应用层涉及到的知识体系是相当庞大的&…

力扣450 删除二叉搜索树中的节点 Java版本

文章目录 题目描述思路代码 题目描述 给定一个二叉搜索树的根节点 root 和一个值 key&#xff0c;删除二叉搜索树中的 key 对应的节点&#xff0c;并保证二叉搜索树的性质不变。返回二叉搜索树&#xff08;有可能被更新&#xff09;的根节点的引用。 一般来说&#xff0c;删除…

力扣100热题[哈希]:最长连续序列

原题&#xff1a;128. 最长连续序列 题解&#xff1a; 官方题解&#xff1a;. - 力扣&#xff08;LeetCode&#xff09;题解&#xff0c;最长连续序列 &#xff1a;哈希表 官方解题思路是先去重&#xff0c;然后判断模板长度的数值是否存在&#xff0c;存在就刷新&#xff0c…

算法打卡day15

今日任务&#xff1a; 1&#xff09;110.平衡二叉树 2&#xff09;257. 二叉树的所有路径 3&#xff09;404.左叶子之和 110.平衡二叉树 题目链接&#xff1a;110. 平衡二叉树 - 力扣&#xff08;LeetCode&#xff09; 给定一个二叉树&#xff0c;判断它是否是高度平衡的二叉树…

爬楼梯C语言

方法一&#xff1a;动态规划 int climbStairs(int n) {int f[100] {0};f[0] 0;f[1] 1;f[2] 2;for(int i 3;i<n;i)f[i] f[i-1] f[i-2];//可能是从i-1阶爬上第i阶&#xff0c;也有可能是从i-2阶 return f[n]; } 方法二&#xff1a;滚动数组 int climbStairs(int n){int…

DCDC60V80V100V转12V5V1A2A降压恒压芯片 惠海半导体原厂

H4020是一种内置40V耐压MOS&#xff0c;并且能够实现精确恒压以及恒流的同步降压型DC-DC转换器&#xff1b;支持1A持续输出电流输出电压可调&#xff0c;最大可支持 100%占空比&#xff1b;通过调节 FB 端口的分压电阻&#xff0c;可以输出 2.5V到 24V 的稳定电压 。H4020 具有…

【Science】:配位不饱和 Al3+ 中心作为 γ-Al2O3 上铂活性相催化剂的结合位点

在许多非均相催化剂中&#xff0c;金属颗粒与其氧化物载体的相互作用可以改变金属的电子属性&#xff0c;并且在确定颗粒形态和保持分散性方面发挥关键作用。我们结合使用了超高磁场、固态魔角旋转核磁共振光谱技术和高角环形暗场扫描透射电子显微镜技术&#xff0c;配合密度泛…

array go 语言的数组 /切片

内存地址通过& package mainimport "fmt"func main() {var arr [2][3]int16fmt.Println(arr)fmt.Printf("arr的地址是: %p \n", &arr)fmt.Printf("arr[0]的地址是 %p \n", &arr[0])fmt.Printf("arr[0][0]的地址是 %p \n"…

通过命令在Windows入站出站放行上放行端口8090, 8443, 5222, 8021

可以通过循环结构来简化操作&#xff0c;下面分别创建入站和出站规则的示例&#xff1a; 入站规则 $ports 8090, 8443, 5222, 8021foreach ($port in $ports) {New-NetFirewallRule -DisplayName "Allow Inbound Port $($port)" -Direction Inbound -Action Allow…

【协议-HTTP】

HTTP协议 HTTP协议(超文本传输协议HyperText Transfer Protocol)&#xff0c;它是基于TCP协议的应用层传输协议。http协议定义web客户端如何才能够web服务器请求web页面&#xff0c;以及服务器如何把web页面传送给客户端。 HTTP 是一种无状态 (stateless) 协议, HTTP协议本身…

基于前端技术实现的全面预算编制系统

前言 在现代商业环境中&#xff0c;预测销售数据和实际成本是每个公司CEO和领导都极为重视的关键指标。然而&#xff0c;由于市场的不断变化&#xff0c;准确地预测和管理这些数据变得愈发具有挑战性。为了应对这一挑战&#xff0c;建立一个高效的系统来管理和审查销售数据的重…

发电机回收公司哪家靠谱?二手房发电机回收公司排名榜

在当今这个能源日益紧张的时代&#xff0c;发电机的存在依然有着不可替代的重要地位。然而&#xff0c;随着科技的不断进步&#xff0c;老旧或退役的发电机往往会被淘汰。这时&#xff0c;选择一家可靠的发电机回收公司就显得尤为重要。本文将为您解析发电机回收行业的现状&…

曲线生成 | 图解Reeds-Shepp曲线生成原理(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 什么是Reeds-Shepp曲线&#xff1f;2 Reeds-Shepp曲线的运动模式3 Reeds-Shepp曲线算法原理3.1 坐标变换3.2 时间翻转(time-flip)3.3 反射变换(reflect)3.4 后向变换(backwards) 4 仿真实现4.1 ROS C实现4.2 Python实现4.3 Matlab实现 0 专栏介绍 &#x1f5…