convertToWorldSpace与convertToNodeSpace

convertToWorldSpace用于将一个相对坐标转化为绝对坐标,convertToNodeSpace则是将一个绝对坐标转化为一个相对坐标。

这里的相对坐标指的是相对于某一个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)


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值