convertToWorldSpace与convertToNodeSpace
2014-06-09 18:14
489 查看
convertToWorldSpace用于将一个相对坐标转化为绝对坐标,convertToNodeSpace则是将一个绝对坐标转化为一个相对坐标。
这里的相对坐标指的是相对于某一个CCNode的坐标(CCNode左下角为0,向右向上为正),这里的绝对坐标是相对于屏幕的坐标(屏幕左下角为0,向右向上为正)。
下面结合一个例子进行理解。
如上图所示,Screen框代表屏幕大小,Sprite框为一个CCSprite实例的大小,Map框为一个大地图的大小。对应的情景是一张大地图,手机屏幕显示地图的一部分,屏幕上显示了一个精灵,Map,Scrren,Sprite三者的中心重合。
我们执行如下代码,分析结果(layer是的锚点(0,0),位置(0,0),所以layer的坐标系等同于Map)
输出结果为:
a) 第一行表示将相对于屏幕位置为(0,0)的坐标转化为相对于Map的坐标
相对于屏幕位置为(0,0)就是屏幕的左下角,而Map的相对坐标系以Map左下角为原点,向右向上为正,而屏幕左下角距离Map左下角横向距离161,纵向距离129,所以屏幕左下角相对于Map左下角的坐标为(161,129)
a) 第二行表示将相对于屏幕位置为(0,0)的坐标转化为相对于Sprite的坐标
相对于屏幕位置为(0,0)就是屏幕的左下角,而Sprite的相对坐标系以Sprite左下角为原点,向右向上为正,而屏幕左下角距离Sprite左下角横向距离176且在其左侧(负方向),纵向距离96且在其下方(负方向),所以屏幕左下角相对于Sprite左下角的坐标为(-176,-96)
c) 第三行表示将相对于Map位置为(0,0)的坐标转化为相对于屏幕的坐标
相对于Map位置为(0,0)就是Map的左下角,而屏幕的相对坐标系以屏幕左下角为原点,向右向上为正,而Map左下角距离屏幕左下角横向距离161且在其左侧(负方向),纵向距离129且在其下方(负方向),所以Map左下角相对于屏幕左下角的坐标为(-161,-129)
d) 第四行表示将相对于Sprite位置为(0,0)的坐标转化为相对于屏幕的坐标
相对于Sprite位置为(0,0)就是Sprite的左下角,而屏幕的相对坐标系以屏幕左下角为原点,向右向上为正,而Sprite左下角距离屏幕左下角横向距离176,纵向距离96,所以屏幕左下角相对于Map左下角的坐标为(176,96)
这里的相对坐标指的是相对于某一个CCNode的坐标(CCNode左下角为0,向右向上为正),这里的绝对坐标是相对于屏幕的坐标(屏幕左下角为0,向右向上为正)。
下面结合一个例子进行理解。
如上图所示,Screen框代表屏幕大小,Sprite框为一个CCSprite实例的大小,Map框为一个大地图的大小。对应的情景是一张大地图,手机屏幕显示地图的一部分,屏幕上显示了一个精灵,Map,Scrren,Sprite三者的中心重合。
我们执行如下代码,分析结果(layer是的锚点(0,0),位置(0,0),所以layer的坐标系等同于Map)
print("mapNode:", layer:convertToNodeSpace(ccp(0,0)).x, layer:convertToNodeSpace(ccp(0,0)).y) print("spriteNode:", sprite:convertToNodeSpace(ccp(0,0)).x, sprite:convertToNodeSpace(ccp(0,0)).y) print("mapWorld:", layer:convertToWorldSpace(ccp(0,0)).x, layer:convertToWorldSpace(ccp(0,0)).y) print("spriteWorld:", sprite:convertToWorldSpace(ccp(0,0)).x, sprite:convertToWorldSpace(ccp(0,0)).y)
输出结果为:
mapNode: 161 129 spriteNode: -176 -96 mapWorld: -161 -129 spriteWorld: 176 96
a) 第一行表示将相对于屏幕位置为(0,0)的坐标转化为相对于Map的坐标
相对于屏幕位置为(0,0)就是屏幕的左下角,而Map的相对坐标系以Map左下角为原点,向右向上为正,而屏幕左下角距离Map左下角横向距离161,纵向距离129,所以屏幕左下角相对于Map左下角的坐标为(161,129)
a) 第二行表示将相对于屏幕位置为(0,0)的坐标转化为相对于Sprite的坐标
相对于屏幕位置为(0,0)就是屏幕的左下角,而Sprite的相对坐标系以Sprite左下角为原点,向右向上为正,而屏幕左下角距离Sprite左下角横向距离176且在其左侧(负方向),纵向距离96且在其下方(负方向),所以屏幕左下角相对于Sprite左下角的坐标为(-176,-96)
c) 第三行表示将相对于Map位置为(0,0)的坐标转化为相对于屏幕的坐标
相对于Map位置为(0,0)就是Map的左下角,而屏幕的相对坐标系以屏幕左下角为原点,向右向上为正,而Map左下角距离屏幕左下角横向距离161且在其左侧(负方向),纵向距离129且在其下方(负方向),所以Map左下角相对于屏幕左下角的坐标为(-161,-129)
d) 第四行表示将相对于Sprite位置为(0,0)的坐标转化为相对于屏幕的坐标
相对于Sprite位置为(0,0)就是Sprite的左下角,而屏幕的相对坐标系以屏幕左下角为原点,向右向上为正,而Sprite左下角距离屏幕左下角横向距离176,纵向距离96,所以屏幕左下角相对于Map左下角的坐标为(176,96)
相关文章推荐
- 坐标系(下) convertToNodeSpace和convertToWorldSpace
- cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用
- convertToNodeSpace和convertToWorldSpace
- cocos2dx convertToNodeSpace和convertToWorldSpace
- cocos2d-x convertToWorldSpace和convertToNodeSpace
- convertToNodeSpace 与 convertToWorldSpace 的使用
- cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用
- cocos2dx 坐标之convertToNodeSpace、convertToWorldSpace、convertToNodeSpaceAR、convertToWorldSpaceAR区别和用法
- cocos2d-x convertToWorldSpace和convertToNodeSpace
- cocos2d-x convertToWorldSpace和convertToNodeSpace
- 【COCOS2DX-游戏开发之三一】之 坐标系(下) convertToNodeSpace和convertToWorldSpace
- cocos2dx 举例说明 convertToNodeSpace 与 convertToWorldSpace 的使用
- convertToNodeSpace和convertToWorldSpace
- convertToWorldSpace无效
- cocos2dx convertToWorldSpace的用法
- convertToWorldSpace 参数详解
- convertToWorldSpace转换为世界坐标系用法
- [置顶] [cocos2d-x]从源码角度思考convertToWorldSpace()与convertToWorldSpaceAR()坐标系的转换
- convertToWorldSpace用法
- convertToWorldSpace convertToWorldSpaceAR