Cocos-2d 坐标系及其坐标转换

简介: <div style="top: 0px;"></div><span style="font-family:宋体;font-size:14px;"></span><p style="margin: 0cm 0cm 0pt;"><span style="font-size:14px;"><strong style="mso-bidi-font-weight: normal;"><span


原作者:jlins  出处:博客园http://www.cnblogs.com/dyllove98/p/3231175.html

 Cocos-2d中,涉及到4种坐标系:

GL坐标系Cocos2DOpenglES为图形库,所以它使用OpenglES坐标系。GL坐标系原点在屏幕左下角x轴向右,y轴向上。

 屏幕坐标系苹果的Quarze2D使用的是不同的坐标系统,原点在屏幕左上角x轴向右,y轴向下。ios的屏幕触摸事件CCTouch传入的位置信息使用的是该坐标系。因此在cocos2d中对触摸事件做出响应前需要首先把触摸点转化到GL坐标系。可以使用CCDirectorconvertToGL来完成这一转化。

世界坐标系也叫做绝对坐标系。世界坐标系和GL坐标系一致,原点在屏幕左下角。

cocos2d中的元素是有父子关系的层级结构,我们通过CCNodeposition设定元素的位置使用的是相对与其父节点的本地坐标系而非世界坐标系。最后在绘制屏幕的时候cocos2d会把这些元素的本地坐标映射成世界坐标系坐标。)

 本地坐标系本地坐标系也叫做物体坐标系,是和特定物体相关联的坐标系。每个物体都有它们独立的坐标系,当物体移动或改变方向时,和该物体关联的坐标系将随之移动或改变方向。比如用cocos2d-x创建了个矩形colorLayer:CCRect(10,10,100,100),这是的本地坐标系为以(10,10)为坐标原点,x轴向右,y轴向上。如果创建了一个CCSprite,锚点为(0.5,0.5),位置为(100,100),size为(40,40),这时的本地坐标系为以(80,80)为坐标原点,x轴向右,y轴向上。

 Cocos-2d中,坐标系转换:

 CCPoint convertToNodeSpace(constCCPoint& worldPoint);
CCPoint convertToWorldSpace(const CCPoint& nodePoint);
CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint);
CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint);

 1.CCPoint convertToNodeSpace(constCCPoint& worldPoint);

 CGPoint nodeSpace =[spriteParentconvertToNodeSpace:orignPosition];

orignPosition转换为相对于spriteParent的本地坐标

 2.CCPointconvertToWorldSpace(const CCPoint& nodePoint);

 CGPoint wordeSpace =[spriteParentconvertToWorldSpace:orignPosition];

orignPosition转换为相对于spriteParent的世界坐标

 3.CCPointconvertToNodeSpaceAR(const CCPoint& worldPoint);

 CGPoint nodeSpaceAR =[spriteParentconvertToWorldSpace:orignPosition];

spriteParent的坐标系原点设置在spriteParent的锚点位置

然后 orignPosition转换为相对于spriteParent的本地坐标

 4.CCPointconvertToWorldSpaceAR(const CCPoint& nodePoint);

 CGPoint wordeSpaceAR =[spriteParentconvertToWorldSpace:orignPosition];

spriteParent的坐标系原点设置在spriteParent的锚点位置

然后 orignPosition转换为相对于spriteParent的世界坐标

  

 

欢迎关注关东升新浪微博@tony_关东升。

关注智捷课堂微信公共平台,了解最新技术文章、图书、教程信息

http://img.blog.csdn.net/20150319185046838

更多精品iOSCocos、移动设计课程请关注智捷课堂官方网站:http://www.zhijieketang.com

智捷课堂论坛网站:http://51work6.com/forum.php

 

 

目录
相关文章
|
数据采集 小程序 Python
搞定短视频!批量下载快手视频(附源码)
相信大家都接触了短视频平台,比如某音、某手等平台,竟然大家都熟悉了,那么今天辰哥分享的技术是:在某手上搜索视频,并实现下载!
1784 0
|
Web App开发 存储 监控
CentOS7.3下部署Rsyslog+LogAnalyzer+MySQL中央日志服务器
一、简介 1、LogAnalyzer 是一款syslog日志和其他网络事件数据的Web前端。它提供了对日志的简单浏览、搜索、基本分析和一些图表报告的功能。数据可以从数据库或一般的syslog文本文件中获取,所以LogAnalyzer不需要改变现有的记录架构。
2132 0
|
7月前
|
API 容器
鸿蒙ArkTS | Badge 信息标记组件自学指南
`Badge` 是 HarmonyOS ArkUI 中用于信息标记的容器组件,可附加在图标、按钮或列表项上,提供红点、数字(如 1~99+)或文本(如 "New"、"Hot")等提示功能。支持位置设置与样式自定义,适合状态提醒、消息通知等场景。核心参数包括 `value`(字符串内容)、`count`(数字提醒)、`maxCount`(上限显示)、`position`(位置)和 `style`(样式)。从 API v12 开始,显隐支持 `scale` 动效,提升交互体验。注意 `Badge` 仅包裹单个子组件,不影响其布局结构。
259 10
鸿蒙ArkTS | Badge 信息标记组件自学指南
|
7月前
|
存储 弹性计算 固态存储
阿里云服务器ESSD Entry和ESSD等云盘解析:区别、应用场景与选择参考
阿里云服务器提供了包括ESSD Entry、ESSD、SSD云盘、高效云盘等丰富多样的云盘类型,以满足不同用户在不同业务场景下的需求。每种云盘都有其独特的性能特点和适用场景,为了帮助用户更好地理解和选择云盘,本文将详细解析阿里云服务器各个云盘的定义、区别、选择参考以及常见问题。让大家对阿里云服务器不同云盘的性能和适用场景有更全面的了解,尤其是ESSD Entry云盘和ESSD云盘,并能够根据自己的需求做出最适合自己的选择。
|
机器学习/深度学习 数据采集 搜索推荐
大数据与金融风控:信用评估的新标准
【10月更文挑战第31天】在数字经济时代,大数据成为金融风控的重要资源,特别是在信用评估领域。本文探讨了大数据在金融风控中的应用,包括多维度数据收集、智能数据分析、动态信用评估和个性化风控策略,以及其优势与挑战,并展望了未来的发展趋势。
|
IDE Linux 开发工具
在Qt开发环境中qmake和cmake的区别优势
选择qmake还是CMake,主要取决于项目的需求和开发者的熟悉程度。如果你正在开发一个纯Qt项目,或者是一个不需要复杂构建脚本的小型项目,qmake可能是一个更好的选择。反之,如果你的项目需要处理复杂的依赖关系,或者你想要一个在多种编程环境中都能工作的构建系统,那么CMake可能是更好的选择。
2027 2
|
虚拟化
【虚拟机】VMware 扩展硬盘大小提示 指定的虚拟磁盘需要进行修复
【虚拟机】VMware 扩展硬盘大小提示 指定的虚拟磁盘需要进行修复
1583 1
|
存储 前端开发 物联网
在魔搭使用ComfyUI,玩转AIGC
ComfyUI是一个功能强大、模块化程度高的AIGC图形和视频生成的用户界面和后台。
|
消息中间件 弹性计算 运维
青团社:基于云原生技术打造行业领先的兼职平台
近些年来,随着云原生技术的不断发展和成熟,越来越多的企业正在拥抱云原生技术来构建自己的业务系统。以青团社旗下的青团兼职平台为例,应用已经基于Spring Cloud框架全面实现了微服务化,并部署运行在阿里云平台。但随之而来也引入了一些额外的需求及问题需要解决!
3323 100
 青团社:基于云原生技术打造行业领先的兼职平台
|
关系型数据库 MySQL 应用服务中间件
【IIS搭建网站】在本地电脑上搭建web服务器并实现外网访问
在网上各种教程和介绍中,搭建网页都会借助各种软件的帮助,比如网页运行的Apache和Nginx、数据库软件MySQL和MSSQL之类,为方便用户使用,还出现了XAMPP、PHPStudy、宝塔面板等等一系列集成服务,都是为了方便我们能快速建立网站。是不是不适用这些软件就无法建立网站了呢?答案当然是否定的,在Windows系统中实际上集成了建立网站所必须的软件环境。今天就让我们来看看,如何使用Windows自带的网站程序建立网站吧。