Cocos2d-x 3.0坐标系详解
Cocos2d-x坐标系和OpenGL坐标系相同,都是起源于笛卡尔坐标系。 笛卡尔坐标系笛卡尔坐标系中定义右手系原点在左下角,x向右,y向上,z向外,OpenGL坐标系为笛卡尔右手系。 屏幕坐标系和Cocos2d坐标系标准屏幕坐标系使用和OpenGL不同的坐标系,而Cocos2d则使用和OpenGL相同的坐标系。 iOS,Android,Windows Phone等在开发应用时使用的是标准屏幕坐标系,原点为屏幕左上角,x向右,y向下。 Cocos2d坐标系和OpenGL坐标系一样,原点为屏幕左下角,x向右,y向上。 世界坐标系(World Coordinate) VS 本地坐标系(Node Local)世界坐标系也叫做绝对坐标系,是游戏开发中建立的概念。因此,“世界”指游戏世界。 锚点(Anchor Point)将一个节点添加到父节点里面时,需要设置其在父节点上的位置,本质上是设置节点的锚点在父节点坐标系上的位置。
VertexZ,PositionZ和zOrder
PositionZ的值即为opengl的z值VertexZ。可以通过setPositionZ接口来设置PositionZ。在实际开发中我们只需关注zOrder。 触摸点(Touch position)所以在处理触摸事件时需要用重写以下四个函数: virtual bool onTouchBegan(Touch *touch,Event * event);
virtual void onTouchEnded(Touch *touch,Event * event);
virtual void onTouchCancelled(Touch *touch,Event * event);
virtual void onTouchMoved(Touch *touch,Event * event);
Touch position是屏幕坐标系中的点,OpenGL position是Cocos2d-x用到的OpenGL坐标系上的点坐标。通常我们在开发中会使用两个接口 此外,关于世界坐标系和本地坐标系的相互转换,在Node中定义了以下四个常用的坐标变换的相关方法: // 把世界坐标转换到当前节点的本地坐标系中
Point convertToNodeSpace(const Point& worldPoint) const;
// 把基于当前节点的本地坐标系下的坐标转换到世界坐标系中
Point convertToWorldSpace(const Point& nodePoint) const;
// 基于Anchor Point把基于当前节点的本地坐标系下的坐标转换到世界坐标系中
Point convertToNodeSpaceAR(const Point& worldPoint) const;
// 基于Anchor Point把世界坐标转换到当前节点的本地坐标系中
Point convertToWorldSpaceAR(const Point& nodePoint) const;
注意,例如convertToNodeSpace,参数传入的是worldPoint,也就是将一个世界坐标转换为以当前节点为参考的局部坐标。其他函数类似。AR是考虑Anchor Point,无AR则不考虑Anchor Point。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |