cocos2dx游戏开发学习笔记(六)之坐标系统

坐标系统

屏幕坐标系:原点在左上角

OpenGl坐标系:原点在左下角(Cocos2d-x使用的坐标系)

世界坐标系:绝对坐标系

本地坐标系:物体本身的坐标系

锚点:操作物体的参考点

在Cocos2d-x中Layer的Anchor Point为默认值(0, 0),其他Node的默认值为(0.5, 0.5)
锚点设置为(0,0)则表示物体左下角为锚点
锚点设置为(0.5,0.5)则表示物体的中心点为锚点

锚点的的函数

setAnchorPoint()//设置锚点
getAnchorPoint()//获得锚点
setIgnoreAnchorPointForPosition()//不使用锚点,默认以(0,0)为操作点

坐标转换

通过导演类的坐标转换

通过导演类的坐标转换函数,屏幕坐标系和OpenGl坐标系是可以相互转换的

setAnchorPoint()//设置锚点
getAnchorPoint()//获得锚点
setIgnoreAnchorPointForPosition()//不使用锚点,默认以(0,0)为操作点

节点的坐标转换

节点自身也有坐标转换的函数
代码示例,将sprite2的坐标转换为相对于sprite1的坐标
Point sprite2 = sprite1->convertToNodeSpace(sprite2->getPosition());

convertToNodeSpace(worldPoint)//将世界坐标转换为本地坐标,相对于节点左下角的坐标
convertToWorldSpace(const Vec2& nodePoint)//将本地坐标转换为世界坐标,相对于节点左下角的坐标
convertToNodeSpaceAR(const Vec2& worldPoint)//将世界坐标转换为本地坐标,相对于锚点的坐标
convertToWorldSpaceAR(const Vec2& nodePoint)//将本地坐标转换为世界坐标,相对于锚点的坐标

这里需要注意的是,所有节点所设置的坐标位置都是相对于父节点的,也就是在本地坐标系中的位置。

逻辑数值与真实数值

逻辑值

getContenSize();//获取节点原始尺寸的大小
getPosition();//获取逻辑坐标

真实值

getContentSizeInPixels();//获取节点真实像素尺寸(在cocos2d-x3.15版本没有看到这个函数)
getPositionInPixels();//获取缩放后的节点坐标(在cocos2d-x3.15版本也没有看到这个函数)

因为在3.15版本里没有找到上面两个函数,所以用下面的函数获取真实大小
getBoundingBox();//获取缩放后的外框大小

缩放因子

导演类包含了设置缩放因子的函数
setContentScaleFactor();//设置缩放因子
getContentScaleFactor()//获取缩放因子



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值