convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。
重点说明:基于...   不一定要是真实的,  convertToWorldSpace 的结果也只是一个新的位置, 这个位置一般都没有什么实际意义的,大部分都是用在碰撞检测 ,一个虚拟的新位置(主要用在子弹和敌人不在同一层的情况,把子弹和敌人转换到同一节点下的本地坐标系进行位置比较,方便进行碰撞检测)

为什么官方文档,在这个文档描叙的时候,写的是基于当前节点下的坐标系....   中文还是值得深入的推敲的。  不是必须是。    只是如果不是当前节点的子节点,用这个方法算出来的新节点,没有什么实际意义。

http://www.cocos.com/docs/native/v3/coordinate-system/zh.html
--- 这篇文章看了 10来篇,比以前的老版本清晰老不少,但是还有几个没有将透彻的地方,多推敲一下,就会有疑问的地方

  this->addChild(sprite1);  //此时添加到的是世界坐标系,也就是OpenGL坐标系  ---这个描述很关键

  this->addChild(sprite2); //此时添加到的是世界坐标系,也就是OpenGL坐标系
// 把世界坐标转换到当前节点的本地坐标系中
Point convertToNodeSpace(const Point& worldPoint) const; // 把基于当前节点的本地坐标系下的坐标转换到世界坐标系中
Point convertToWorldSpace(const Point& nodePoint) const;

现在的推敲点在于  convertToWorldSpace 方法的参数描叙:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。 但是实际的例子他们又不是父子关系。  
所以在理解: Point point2 = sprite1->convertToWorldSpace(sprite2->getPosition());  这句话的意识的时候,sprite2->getPosition() 实际获取的是父节点的本地坐标(父节点也是顶节点,所以也是世界坐标)。

官方文档给的解释:让人很疑惑

其中:Point point1 = sprite1->convertToNodeSpace(sprite2->getPosition());

相当于sprite2这个节点添加到(实际没有添加,只是这样理解)sprite1这个节点上,那么就需要使用sprite1这个节点的节点坐标系统,这个节点的节点坐标系统的原点在(20,40),而sprite1的坐标是(-5,-20),那么经过变换之后,sprite1的坐标就是(-25,-60)。

其中:Point point2 = sprite1->convertToWorldSpace(sprite2->getPosition());

此时的变换是将sprite2的坐标转换到sprite1的世界坐标系下,而其中世界坐标系是没有变化的,始终都是和OpenGL等同,只不过sprite2在变换的时候将sprite1作为了”参照“而已。所以变换之后sprite2的坐标为:(15,20)。

我的解释理解,让我自己豁然开朗: 
其中:Point point2 = sprite1->convertToWorldSpace(sprite2->getPosition());
相当于sprite2这个节点添加到(实际没有添加,只是这样理解)sprite1这个节点上(-5,-20),就是新虚拟节点node2_(-5,-20)这个新位置是 sprite1 本地坐标系下的相对位置  ,所以 node2_ 在世界坐标的位置就是:(20-5,40-20)=(15,20)。 这样理解起来,非常直观明了。---和参数说明也对应起来了。

解释的比较好的文章:
https://www.tuicool.com/articles/6ZBJZz

ocos2d-x 3.0坐标系详解--透彻篇 ---- convertToWorldSpace:把基于当前节点的本地坐标系下的坐标转换到世界坐标系中。的更多相关文章

  1. Cocos2d-x 3.0坐标系详解(转载)

    Cocos2d-x 3.0坐标系详解 Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系. 笛卡尔坐标系 笛卡尔坐标系中定义右手系原点在左下角,x向右,y向上,z向外,OpenG ...

  2. (6)Cocos2d-x 3.0坐标系详解

    Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系. 笛卡尔坐标系 笛卡尔坐标系中定义右手系原点在左下角,x向右,y向上,z向外,OpenGL坐标系为笛卡尔右手系. 屏幕坐标系和 ...

  3. ArcGIS中的北京54和西安80投影坐标系详解

    ArcGIS中的北京54和西安80投影坐标系详解 1.首先理解地理坐标系(Geographic coordinate system),Geographic coordinate system直译为地理 ...

  4. CGJ02、BD09、西安80、北京54、CGCS2000常用坐标系详解

    一.万能地图下载器中的常用坐标系 水经注万能地图下载器中的常用的坐标系主要包括WGS84经纬度投影.WGS84 Web 墨卡托投影.WGS84 UTM 投影.北京54高斯投影.西安80高斯投影.CGC ...

  5. [转]地理投影,常用坐标系详解、WGS84、WGS84 Web墨卡托、WGS84 UTM、北京54坐标系、西安80坐标系、CGCS2000坐标系

    转自:http://www.rivermap.cn/docs/show-1829.html 常用坐标系详解 (一)WGS84坐标系 WGS-84坐标系(World Geodetic System一19 ...

  6. Android消息传递之EventBus 3.0使用详解

    前言: 前面两篇不仅学习了子线程与UI主线程之间的通信方式,也学习了如何实现组件之间通信,基于前面的知识我们今天来分析一下EventBus是如何管理事件总线的,EventBus到底是不是最佳方案?学习 ...

  7. [转载]AxureRP 7.0部件详解(一)

    本文为Axure RT7.0教程,本章主要介绍menu菜单.table表格.Tree Widget 树部件三个部件,后续将持续更新...... Menu 菜单 常用案例 网站导航菜单部件通常用于母板之 ...

  8. NPOI2.2.0.0实例详解(十)—设置EXCEL单元格【文本格式】 NPOI 单元格 格式设为文本 HSSFDataFormat

    NPOI2.2.0.0实例详解(十)—设置EXCEL单元格[文本格式] 2015年12月10日 09:55:17 阅读数:3150 using System; using System.Collect ...

  9. windows版mysql8.0安装详解

    2018年07月04日 13:37:40 Zn昕 阅读数 6433更多 分类专栏: mysql   版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. ...

随机推荐

  1. 最小割求法&&可行边和必须边

    最小割的可行边与必须边 就是在残量网络上跑tarjan 可行边: 满流并且残量网络上不能存在入点到出点的路径 必须边: 满流并且残量网络上入点能从源点到达,出点能到汇点. 任意一种最小割求法: 跑一边 ...

  2. 【模板】Trie

    代码如下 int trie[maxn][26],tot=1,ed[maxn]; void insert(char *s){ int len=strlen(s+1),now=1; for(int i=1 ...

  3. Sublime Text3—Project(项目管理)

    摘要 Project 可以理解为项目.工程或者站点,以下称项目.使用项目管理的好处是:不用将所有文件都放到同一个根目录,可以将相关但不同路径的文件组成一个Project,每个项目都是独立的,文件的状态 ...

  4. frp中的json模块

    预备知识 Go中的接口的数据结构可以分为两部分: 其中一部分指向或者存储了原始数据的值 另一部分指向或者存储了原始数据的类型描述符(其中包含类型,以及对应于接口中的方法) 所以大体上我们可以粗略的认为 ...

  5. sed命令使用介绍(转载)

    sed命令介绍 (转自:http://www.cnblogs.com/ggjucheng/archive/2013/01/13/2856901.html) 简介 sed 是一种在线编辑器,它一次处理一 ...

  6. Git-Credential-Manager-for-Mac-and-Linux

    1.安装brew 安装命令: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/instal ...

  7. CentOS 7使用yum安装MYSQL

    来源:https://typecodes.com/linux/yuminstallmysql5710.html wget -i http://dev.mysql.com/get/mysql57-com ...

  8. MySQL邮件使用情况统计方法

    邮件使用情况统计方法如下: ) AS domain, COUNT(DISTINCT [column_name]) AS mail_count, COUNT([column_name]) AS mail ...

  9. js 定义像java一样的map方便取值【转】

    js 定义像java一样的map方便取值.  百度有位大神说"js对象本身就是一种Map结构",这真是一段让人欢天喜地的代码. <script> //定义一个全局map ...

  10. dubbo面试问题

    为什么用微服务: 为什么zookeeper能作为注册中心: 使用分布式碰到的bug, zookeeper有集群吗?怎么实现的: zookeeper宕机还能访问吗: 服务失效踢出zookeeper中临时 ...