cocos2d-x 中不同layer下的node的坐标转换

本文通过一个具体的Lua脚本示例,介绍了如何将不同层级的UI元素间的坐标进行转换,以便于实现元素之间的精确对齐。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上搜出来的这些个坐标转换的例子都好官方,无论是解释还是例子都不实在。但在具体的项目开发中总是遇到各种坐标转换的问题。这里记录一下不同layer下两个坐标的转换。


例如: 当layer A 上有一个BtnA,layer B 上有一个BtnB,你知道Btn A 的getPosition ,也知道Btn B 的 getPosition, 这个时候你想要把 Btn A 放到B的坐标上去应该set神马样的Position呢??

那么,下面我用一段简单的lua代码来解决这个问题。

-----BTN A 的本地坐标

local btnAPosX, btnAPosY = BtnA:getPosition()

-----Btn B 的本地坐标

local btnBPosX, btnBPosY = BtnB:getPosition()

-----Btn A 的世界坐标

local btnAWorldPos = BtnA:getParent():convertToWorldSpacebtnAPosX(  ccp(  btnAPosX, btnAPosY ) )

-----Btn B 在 Btn A 的本地坐标

local btnBNodePos = BtnB:getParent():convertToNodeSpace(  btnAWorldPos  )

这是拿到了b在a坐标系下面的本地坐标,给a setposition btnBNodePos .x , btnBNodePos .y 上,a就能现在在b的坐标上了。注意,这是在忽略锚点是用的函数哈~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值