Cocos2d-x扫盲之坐标系、锚点

Cocos2d-x扫盲之坐标系、锚点,第1张

概述Cocos2d-x扫盲坐标系锚点 nchxmoon2014-07-09 09:30:151208 次阅读 一、引言 在Cocos2d-x的开发过程中,经常会碰到设置精灵位置的问题。而设置位置的过程,涉及到两个问题:第一是坐标系,包括原点的位置、X/Y坐标轴的方向灯;第二是基准点(Cocos2d-x中叫锚点),即精灵旋转的时候,以哪个点为轴心;下面我们将逐一来分析这两个问题。 二、正文 1. 坐 Cocos2d-x扫盲之坐标系、锚点

nchxmoon2014-07-09 09:30:151208 次阅读

一、引言

在Cocos2d-x的开发过程中,经常会碰到设置精灵位置的问题。而设置位置的过程,涉及到两个问题:第一是坐标系,包括原点的位置、X/Y坐标轴的方向灯;第二是基准点(Cocos2d-x中叫锚点),即精灵旋转的时候,以哪个点为轴心;下面我们将逐一来分析这两个问题。


二、正文

1. 坐标系

Cocos2d-x中,坐标系包括:OpenGL坐标系、世界坐标系、节点相对坐标系、仿射变换等,这些坐标系的原点都是在屏幕的左下角、X轴向右、Y轴向上。


1.1 OpenGL坐标系

屏幕坐标系的原点在屏幕的左上角、X轴向右、Y轴向下。屏幕触击时间CCtouch传入的位置信息就是该坐标系,因此Cocos2d-x在对屏幕触摸事件做出响应前,需要使用CCDirecotr::convertToGL()方法,将触摸点转化为OpenGL坐标系。


1.2 世界坐标系

也叫绝对坐标系,是游戏开发中建立的概念,世界是指游戏世界。Cocos2D-X中的元素都是父子关系的层级结构,通过CCNode设置位置使用的是相对其父节点的本地坐标系,最后绘制屏幕的时候,会将本地节点坐标映射成世界坐标系。


1.3 节点坐标系

节点坐标系是和特定节点相关联的坐标系,每个节点都有独立的坐标系。当节点移动或者改变方向的时候,和该节点相关联的坐标系(子节点)会随之一起移动或改变方向。CCNode类中设置位置使用的就是父节点的节点坐标系,它有两个函数可以转换坐标:

1)convertToWorldspace:把基于当前节点的本地坐标系转换为世界坐标系;不基于锚点,如果基于锚点应该使用convertToWorldspaceAR;

2)convertToNodeSpace:把世界坐标系转化为当前节点的本地坐标系;不基于锚点,如果基于锚点应该使用convertToNodeSpaceAR;


1.4 仿射变换

仿射变换是指在线性变换的基础上加上平移,平移不是线性变换。游戏中大量使用的旋转、缩放、平移等都是仿射变换。


2. 锚点

通俗点说,锚点就是你在CCNode中,使用贴图的基准点。默认锚点为(0.5,0.5)。


精灵在进行运动的过程中,都需要一个锚点,比如在旋转的过程中,设置的锚点不一样,旋转效果是不一样的。比如使用默认锚点,精灵是以中点为轴心旋转;使用(0,0)作为锚点,精灵是以左下角为轴心旋转;使用(1,1)作为锚点,精灵是以右上角为轴心旋转。


三、小结

这些都是基本的概念,有空的时候,我会附上详细的实例代码和效果图。


推荐阅读:

Cocos2d-x坐标系详解


来源网址:http://www.cnblogs.com/nchxmoon/p/3832280.html

总结

以上是内存溢出为你收集整理的Cocos2d-x扫盲之坐标系、锚点全部内容,希望文章能够帮你解决Cocos2d-x扫盲之坐标系、锚点所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1022319.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-23
下一篇 2022-05-23

发表评论

登录后才能评论

评论列表(0条)

保存