Cocos2d-坐标系详解

本文深入解析Cocos2d-x的坐标系统,包括笛卡尔坐标系、屏幕坐标系、世界坐标系和本地坐标系。讲解了锚点的概念和作用,忽略锚点的设置,以及VertexZ、PositionZ和zOrder在渲染顺序中的影响。同时,还介绍了如何处理触摸事件中的坐标转换问题。
摘要由CSDN通过智能技术生成

Cocos2d-x的坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系。

笛卡尔坐标系

右手系:
这里写图片描述

屏幕坐标系和Cocos2d坐标系

这里写图片描述

世界坐标系(world coordinate)和本地坐标系(local coordinate)

世界坐标系也就是绝对坐标系,Cocos2d中的元素是有父子关系的层级结构,通过Node的setPosition方法设定元素的位置使用的是相对与其父节点的本地坐标系而非世界坐标系,最后绘制屏幕的时候Cocos2d会把这些元素的本地坐标映射成世界坐标系。
本地坐标系也就是相对坐标系,是和节点相关联的坐标系。每个节点都有独立的坐标系,当节点移动或改变方向时,和该节点相关联的坐标系将随之移动或改变方向。

锚点(Anchor Point)

将一个节点添加到父节点里面时,需要设置其在父节点上的位置,本质上是设置节点的锚点在父节点坐标系上的位置。
Anchor Point的两个参数范围为0到1,表示的是乘数因子。(0.5, 0.5)表示Anchor Point位于节点长度和宽度的一半的地方,也就是自己的中心和是父节点对齐的地方。
Cocos2d中Layer的锚点的默认值为0和0,其他Node的默认值为0.5和0.5。
例如:

auto red = LayerColor::create(Color4B(255, 100, 100, 128), visibleSize.width/2, visibleSize.height/2);
auto green = LayerColor::create(Color4B(100, 255, 100, 128), visibleSize.width/4, visibleSize.height/4);
red->addChild(green);
this->addChild(red, 0);

这里写图片描述
因为Layer比较特殊,它默认忽略锚点,所以要调用ignoreAnchorPointForPosition()接口来改变锚点。例如:

auto red = LayerColor::create(Color4B(255, 100, 100, 128), visibleSize.width/2, visibleSize.height/2);
red->ignoreAnchorPointForPosition(false);
red->setAnchorPoint(Point(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值