Cocos2d-Lua 锚点

本文介绍了Quick游戏引擎中节点的锚点设置方法及其对渲染的影响。锚点用于定义节点在其父节点坐标系中的位置,并作为旋转中心点。文章还讨论了如何通过设置IgnoreAnchorPoint属性来固定节点的位置,以及LocalZOrder和GlobalZOrder如何控制节点的渲染顺序。

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

将一个节点添加到父节点里面时,需要设置其在父节点上的位置,本质上是设置节点的锚点(Anchor Point)在父节点坐标系上的位置。锚点同时也是旋转一个节点时的中心点。

锚点的值是节点宽和高的比例因子,有以下特性。

(1)Anchor Point 的两个参数范围为0~1.它们表示的并不是像素点,而是乘数因子。(0.5,0.5)表示Anchor Point位于节点长度乘0.5和宽度乘0.5的地方,即节点的中心。

(2)在Quick中Layer的Anchor Point的默认值为(0,0),其他Node的默认值为(0.5,0.5)。

忽略锚点

Ignore Anchor Point全称是 ignoreAnchorPointForPosition,作用是将锚点固定在一个地方。如果设置其值为true,则节点的Anchor Point固定为左下角,否则为默认值或用户设定值。

ZOrder 与渲染顺序

Quick开发2D游戏,z轴的值并不影响物体显示在屏幕上的远近,它只与渲染顺序有关,z轴值小的Node最先被渲染。

Quick中Node有两个ZOrder值

(1)LocalZorder是一个父节点的兄弟节点之间排序的key值,决定它们的在SceneGraph渲染树上的顺序

如果两个节点的LocalZOrder相同,那么先加入的节点先被渲染

(2)GlobalZOrder是绕过Scene Graph渲染树直接提升渲染等级的一个入口。GlobalZOrder依然是值小的渲染。

当GlobalZOrder为0,节点遵循Scene Graph渲染

默认情况下,所有节点的GlobalZOrder初始化为0

如果两个节点的GlobalZOrder不为0且相同,那么渲染顺序不可预期

SpriteBatchNode 不支持GlobalZOrder

设置LocalZOrder的相关接口如下:

Node:addChild(child,zorder,tag)

Node:add()

Node:addTo()

Node:zorder()

Node:setLocalZorder()

设置GlobalZOrder的相关接口如下:

Node:setPositionZ()

Node:setGlobalZOrder()



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值