`
墙头上一根草
  • 浏览: 154563 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

cocos2dx 坐标系

阅读更多

    cocos2dx 坐标系的概念比较多有cocos2dx坐标系,屏幕坐标系,openGL坐标系,世界坐标系,本地坐标系。还有一个和位置有关的概念就是描点( anchor point)

 

    cocos2dx坐标系VS 屏幕坐标系,这两个坐标系都是2D坐标系:

         cocos2dx坐标系在左下角,Y轴向上,X轴向右

         屏幕坐标系在左上角,Y轴向下,X轴向右

    OpenGL坐标系:

        openGL坐标系在屏幕的左下角,Y轴向上,X轴向右

 

    从上可以看出,cocos2dx的坐标系和OpenGL坐标系是一样的,而且是和笛卡儿积的坐标系是一样的。

    iOS, Android, Windows Phone等在开发应用时使用的是标准屏幕坐标系,是和cocos2dx坐标系与OpenGL坐标系完全不同的坐标系。

 

                    

 

 

   在开发中,我们经常会提到两个比较抽象的概念-世界坐标系和本地坐标系。这两个概念可以帮助我们更好的理解节点在Cocos2d坐标系中的位置以及对应关系

 

  

   世界坐标系(World Coordinate) VS 本地坐标系(Node Local)

       世界坐标系又叫相对坐标系  ,是游戏开发中的一个概念,因此世界指的就是游戏世界,可以理解世界坐标系为游戏坐标系。

       cocos2dx中的元素是有父子关系的,我们通过节点的setPostion设置的位置,其实就是相对父节点的本地坐标系,而非世界坐标系。也就是设置的是相对于父节点中的位置,在父节点世界中的位置。

     本地坐标系又叫绝对坐标系,是节点在父节点中的位置。每个节点都有独立的坐标系,当节点移动或改变方向时,和该节点关联的坐标系将随之移动或改变方向。

    描点就是节点的参考点,比如设置一个精灵的位置为ccp(100,100),其实就是设置这个描点所在位置为100,100的位置

   

我们创建一个灰色的Sprite的图像作为父对象,创建一个绿色的Sprite作为子对象。设置父对象的位置为ccp(100,100),锚点ccp(0,0),子对象的位置在ccp(0,0),锚点ccp(0.5,0.5)。

1    CCSprite* parent = CCSprite::create("parent.png");
 2    parent->setAnchorPoint(ccp(0, 0));// Anchor Point
 3    parent->setPosition(ccp(100, 100));
 4    parent->setAnchorPoint(ccp(0, 0));
 5    addChild(parent);
 6
 7    //create child 
 8    CCSprite* child = CCSprite::create("child.png");
 9    child->setAnchorPoint(ccp(0.5, 0.5));
10    child->setPosition(ccp(0, 0));
11    parent->addChild(child);//add child sprite into parent sprite.

我们设置了子对象的位置在ccp(0,0),父对象的位置在ccp(100,100),因此,子对象显示在如图所示位置:

 

    

    
                      

 
 

     

       

        

  • 大小: 36.4 KB
  • 大小: 135.8 KB
分享到:
评论

相关推荐

    Cocos2d-x开发游戏的坐标系知识介绍

    然而,在IOS设备上,屏幕坐标系默认原点在左上角,与OpenGL坐标系正好相反,因此在Cocos2d-x中处理触摸事件时,需要将触摸点的位置转换为OpenGL坐标。 OpenGL坐标系,又称为绘图坐标系,是游戏开发中常见的坐标系之...

    Photoshop坐标转化成cocos2d坐标工具mac版

    "Photoshop坐标转化成cocos2d坐标工具mac版"是一个专门为解决这个问题而设计的应用,它帮助前端开发者和设计师将Photoshop中的图形元素位置无缝转换到cocos2d-x游戏引擎的坐标系统中。以下是对这个工具及其相关知识...

    Cocos2d-x学习笔记(三)—— 坐标系

    Cocos2d-x学习笔记(三)—— 坐标系

    android cocos 2D范例

    4. **坐标系统**: Cocos2D有自己的坐标系统,其中原点位于屏幕左上角,x轴向右,y轴向下。获取到的点击坐标需要转换为Cocos2D的坐标系统,以便正确地与游戏对象交互。 5. **集成cocos2d-android.jar**: 工程中包含...

    将3D坐标转成2D坐标的方法2

    转换后的坐标会处于屏幕的左上角为原点的坐标系中,其中x和y值范围在0到1之间。如果需要将其转换为像素坐标,可以乘以屏幕的宽度和高度。但需要注意的是,Unity的屏幕y轴方向是反的,因此,屏幕坐标系统的y轴是从...

    cocos2d入门cocos2d入门

    5. **坐标系**:在OpenGL ES中,坐标系原点位于屏幕底部中央,Y轴向上,X轴向右。`anchorPoint`是精灵的锚点,用于指定旋转和缩放的中心点。 6. **Menu与MenuItem**:菜单用于展示游戏的交互元素,如按钮。MenuItem...

    cocos2d-android

    默认情况下,触摸事件的原点位于屏幕左上角,而游戏中的坐标原点位于左下角。因此,在处理触摸事件时,必须先将触摸点转换为游戏坐标系统下的坐标。 6. **CCSprite**:代表游戏中的精灵对象,是游戏画面中最基本的...

    cocos2d的资料

    3. **关于cocoa和cocos2d的简单坐标系关系**:Cocos2d是基于Cocoa Touch构建的,因此了解Cocoa中的坐标系统对理解Cocos2d的布局至关重要。在Cocos2d中,坐标原点通常位于屏幕左上角,而Y轴向下。熟悉这个坐标系统有...

    cocos2d-x文字描边Demo

    `draw()`方法允许我们在屏幕坐标系上直接绘制,因此我们可以在此处利用OpenGL ES的顶点数组和着色器来实现描边效果。通常,我们会先绘制原文字,然后在周围加上一圈与设定颜色和宽度一致的线条,以达到描边的效果。 ...

    如何用cocos2d制作一款简单的iphone游戏

    3. **确定位置**:Cocos2d使用左下角作为坐标原点(0,0),与常见的左上角坐标系不同。若要将玩家精灵放置在屏幕左侧中央,则x坐标应为玩家精灵宽度的一半,而y坐标则为屏幕高度的一半。 #### 进阶知识点 - **动画...

    opengl es以及cocos 2d教程

    - **坐标系**:OpenGL ES使用右手坐标系,Z轴正方向朝向屏幕内部。 - **着色器**:程序片段,运行在GPU上,负责颜色计算和光照效果。 - **帧缓冲区**:用于存储最终图像的内存区域。 - **纹理**:在图像数据上...

    cocos2d-x面试题DOCX文档

    当CCSprite对象转换坐标系的时候,它所包含的CCSprite对象也会转换坐标系。sprites是CCNode的子类,所以他们也可以使用actions来转换坐标。 三、CCNode CCNode是场景、层、菜单、精灵等所有节点的父类,它是一个...

    cocos2d-x 自学文档

    【cocos2d-x 自学文档】 cocos2d-x 是一个开源的游戏开发框架,它基于C++,广泛应用于移动游戏开发。以下是一些cocos2d-x的关键知识点: 一、运动中的加速度 在cocos2d-x中,我们可以利用Ease系列的方法来实现物体...

    cocos2d-x obb 旋转碰撞 矩形

    - 首先,需要转换obb的坐标到矩形的局部坐标系,这样可以简化问题,使得obb看起来像是静止的。 - 然后,计算obb的边线与矩形边线的最小距离,如果所有边的距离都大于零,则说明没有碰撞;如果存在某个边的距离小于...

    【Cocos2d-x游戏引擎开发笔记(13)】Tiled Map Editor(一)

    Cocos2d-x是一款流行的开源游戏开发框架,广泛用于2D游戏的开发。在这个系列的开发笔记中,我们将深入探讨如何使用Cocos2d-x与Tiled Map Editor结合,创建和管理游戏地图。Tiled Map Editor是一款强大的2D地图编辑器...

    cocos2d-x-2.2.3安卓横竖屏自动切换

    如果游戏包含物理引擎,如Box2D,那么屏幕方向的改变可能会影响到物理世界的坐标系。需要在屏幕切换时相应地调整物理世界的方向和比例,以保持游戏逻辑的一致性。 5. **测试与优化** 在实现横竖屏切换后,务必在...

Global site tag (gtag.js) - Google Analytics