关于this.node.convertToWorldSpaceAR(cc.v2(0,0))与 this.node.convertToNodeSpaceAR(cc.v2(0,0)), 相信每个人都已经知道字面意思且拜读过大部分相同的文章,我看过几十篇了吧,然而还是不能理解与正确使用(自认为不是很傻…请不要鄙视往下看吧…)

这里呢,经过我反复的试验与思考,我将给和我一样懵…的童鞋们分享下:

  1. 在介绍这两个坐标转换前呢,先说下this.node.getPosition与this.node.setPosition
    这俩呢,都是在节点坐标下使用的,什么意思呢?
    比如说:以下图为例,一个母节点block(蓝色精灵节点)和它的子节点mid(红色精灵节点),其中m的母节点为canvas;黑色精灵节点player的母节点也为canvas。

    那么,我们从cocos上看到的蓝色精灵节点(block)的Position坐标是什么呢?
    就是这个节点的节点坐标,并不是世界坐标。
    如果我们用this.block.getPosition()得到的就是当前节点的节点坐标。
    再说细点就是,canvas的锚点坐标为cc.v2(0,0),block的世界坐标与canvas的锚点坐标差值就是block的节点坐标。 block的世界坐标cc.v2(230, 250) 减去canvas的世界坐标cc.v2(480, 320) 就等于block的节点坐标 cc.v2(-250, -70)。
    那么, 如果要用setPosition的话,也是一样,要先把世界坐标换成block的母节点下的节点坐标,再赋给setPosition,说的好复杂,以下为代码实现。
    var w_pos = cc.v2(230, 250)//也可以随便别的位置。
    this.block.setPosition(this.block.parent.convertToNodeSpaceAR(w_pos))

    总结下,getPosition和setPosition都是针对使用对象(比如说红色节点mid)的节点坐标。那么,在使用的时候呢,就有以下几种情况:
    1.var n_pos = this.mid.getPosition() //节点坐标,母节点为block, mid节点坐标为(-10, 10)
    2… var w_pos = this.mid.convertToWorldSpaceAR(cc.v2(0, 0)) //获取当前节点的世界坐标
    比如 mid节点坐标为(-10, 10),而它的世界坐标为(240, 160)
    转化为世界坐标的时候,不用考虑母节点,可以直接转化。
    3… setPosition()上面举了个例子,这里再说个别的吧,因为是母节点下的节点坐标,所以要先确定是同一个母节点吗?
    4… 比如母节点一m1有个子节点c1,母节点二m2有个子节点c2。如果我想把c1放到当前c2的位置应该怎么写代码呢?
    步骤一,获取当前c2的世界坐标c2_w_pos;
    步骤二,将c2_w_pos转化为母节点一m1的节点坐标m1_n_pos;
    步骤三, 将m1_n_pos赋值给setPostion: this.c1.setPosition(m1_n_pos)

最后说下以下代码中有个 e.getLocation(); 这里的getLocation()获取的是世界坐标。
所以如果想把点击的位置赋值给节点,用setPosition要先转化为母节点下的的节点坐标。
this.node.on(cc.Node.EventType.TOUCH_START, function(e) {
var w_pos = e.getLocation()
}.bind(this), this)

如果有错,欢迎指正,不喜勿喷…谢谢!

cocos 节点坐标和世界坐标转换 个人理解与应用相关推荐

  1. 相机标定(二)——图像坐标与世界坐标转换

    相机标定(一)--内参标定与程序实现 相机标定(二)--图像坐标与世界坐标转换 相机标定(三)--手眼标定 一.坐标关系 相机中有四个坐标系,分别为world,camera,image,pixel w ...

  2. 相机照片的像素坐标和世界坐标转换

    相机坐标和世界坐标变换原理就是在4个坐标系直接转换, 如果考虑GIS系统那么还需要考虑空间参考坐标, 空间参考坐标系又需要考虑地理和投影坐标系,  加起来就是6个坐标系. 示例图如下 此段代码基于op ...

  3. 图像坐标与世界坐标转换

    一.坐标变换详解 1.1 坐标关系 相机中有四个坐标系,分别为world,camera,image,pixel world为世界坐标系,可以任意指定轴和轴,为上图P点所在坐标系. camera为相机坐 ...

  4. cocos子节点转父节点坐标 原理浅析(局部坐标转世界坐标同理)

    在CCNode的类中,有一个得到 一个节点坐标系转换父亲坐标系的一个矩阵,节点内坐标乘以这个矩阵,就可以转换为在节点父节点中的坐标,方法名为: Mat4& Node::getNodeToPar ...

  5. 关于相机坐标到投影空间坐标转换的理解

    在记录此文前看过许多3D介绍的书籍,却总未能理解相机坐标至空间坐标转换的情况,网上搜索亦五花八门,多是文章转载,时而见文式有误亦未有异议,尚未知其人是否曾读此文章.因而自己推导与想像,总算能观其义.故 ...

  6. 2.cocos2d-x坐标体系(UI坐标系,GL坐标系,本地坐标,世界坐标,节点坐标)

     openGL & UI坐标体系 OpenGL坐标系:该坐标原点在屏幕左下角,x轴向右,y轴向上.这也就是cocos2dx中用到的坐标系. 屏幕坐标系:该坐标系的原点在屏幕左上角,x轴向右 ...

  7. 火星坐标、百度坐标、WGS84坐标转换代码(JS、python版)

    火星坐标.百度坐标.WGS84坐标转换代码(JS.python版) 一.JS版本源码 github:https://github.com/wandergis/coordTransform /*** C ...

  8. PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例

    PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例 原文:PHP+百度地图API+JAVASCRIPT实现GPS坐标与百度坐标转换的实例 <!--小幅的坐标转换点位程 ...

  9. java 火星坐标转wgs84_js中火星坐标、百度坐标、WGS84坐标转换实现方法示例

    本文实例讲述了js中火星坐标.百度坐标.WGS84坐标转换实现方法.分享给大家供大家参考,具体如下: //定义一些常量 var x_PI = 3.14159265358979324 * 3000.0 ...

  10. c语言经纬度和大地坐标转换,经纬度坐标与大地坐标转换表

    *子午线角度值纬度值b经度值l角度值角度值f2-b2 114114 114114 114114 114114 1 234.565411113.59429634.94836113.9953-0.0047 ...

最新文章

  1. mysql双主使用reset master清除日志要小心
  2. 谷歌施密特:美人才签证政策让硅谷转移到中国
  3. 5分钟,带你领略项目经理十年的功力
  4. 提高编程能力的7条建议
  5. java 数组 内存_图解Java数组的内存分配
  6. oracle扩容日志文件,调整Oracle Redo Logfile日志文件的大小
  7. 系统延时任务及定时任务
  8. python numpy安装windows_windows 下python+numpy安装实用教程
  9. 一个SQL SERVER功能模块表
  10. 李洪强iOS开发之OC[011] - 有参方法的声明实现以及调用练习
  11. 代码之美~Func让构造方法为属性赋值更灵活
  12. 爬取TAPTAP游戏应用榜单
  13. 淘宝、京东、苏宁易购技术架构分析
  14. 总结:Python 轻量级序列化和反序列化包 marshmallow 详细使用指南
  15. Unreal Engine 4 渲染目标(Render Target)教程 之 使用渲染目标绘制(下)
  16. 054 webshell介绍与文件上传漏洞
  17. IT桔子IT互联网公司产品数据库及商业信息服务
  18. 【经验科普】实战分析C工程代码可能遇到的编译问题及其解决思路
  19. 图像分割之 Geodesic segmentation 和 Graph-Cut
  20. 脑电信号(EEG)简介:原理、应用与分析方法

热门文章

  1. Msm8960(APQ8064)平台的MSM-AOSP-kitkat编译适配(7):信号通讯
  2. Sqlite可视化工具sqliteman安装
  3. 最新ApkIDE少月版+JAVA环境变量一键配置软件合集
  4. python爬取京东商品数据要先登录_Python爬虫的起点
  5. 微信小程序实现定位功能
  6. ioncube php encode,ioncube 加密
  7. 正项级数敛散性的判别
  8. 分享一款好用的英语词频统计软件
  9. 计算机记笔记软件是什么,电脑记笔记软件哪个好(适合学生做笔记的软件)
  10. HMC5883L磁力计使用介绍