`

cocos2d-x: 坐标系

 
阅读更多

(1)屏幕坐标系
        在windows系统中,默认的原点在屏幕的左上角,X轴向右,Y轴向下。
        CCTouch对象中的坐标
(2)GL坐标系
        原点在左下角,X轴向右,Y轴向上。由于cocos2d-x使用的是open gl渲染引擎,而不是directx 3d引擎,那么GL坐标系就不和屏幕坐标系重合,这是要注意的一点。因此,当我们调用了一个屏幕响应事件时,如 ccTouchEnded(CCTouch* touch, CCEvent* event);
此时我们CCPoint location = touch->locationInView(touch->View)返回点击处在屏幕坐标系的位置,而不是GL坐标系。因此就有将屏幕坐标系转换成GL坐标系的函数。
CCPoing convertedLocation = CCDirector::sharedDirector()->convertToGL(location);
 
(3)本地坐标系
         游戏中,每一个对象都有一个自己的坐标系,这些坐标系就叫做本地坐标系。
         相对于父对象的坐标系,原点在左下角,X轴向右,Y轴向上。举个例子,以我自己作为坐标原点,那么在我附近(在我这个坐标系内)的对象就是子对象,而我就 是父对象,这些子对象的位置都是本地坐标系,是相对于我(父对象)来说的。下面我举一个代码来做说明:
      ..........
      CCLayer* layer = new CCLayer();
      CCSprite* player = CCSprite::spriteWithFile("player.png");
     layer->addChild(player, 1);
     ................

在 这里,player对象就是子对象,layer就是父对象,那么player相对于layer的位置就是在本地坐标系中的位置。如果,layer(父对 象)发生移动,就是我们说的背景移动,那么,player(子对象)也会跟着移动,但子对象在本地坐标系中的位置不变,改变的是子对象在世界坐标系中的位 置。

 

比如物体的各个坐标都是相对Scence来的。

(4)世界坐标系

         世界坐标系和GL坐标系一致,原点在屏幕左下角,x轴向右,y轴向上。世界坐标就是所谓的绝对坐标,所有的对象虽然都有自己的本地坐标系,但这些对象同样的在世界坐标系中也有一个坐标。

 


 

 

 

另外:CCNode类的setPosition、getPosition函数如果是一个Node的Child则获取的坐标就是该Node的本地坐标。

 

另一个关键的问题就是在cocos2d-x里面就是各种对象的大小问题。因为在cocos2d-x里CCNode对象有缩放的方法setScaleX和setScaleY。所以在获取对象大小的时候就必须根据情况明确指定获取对象原始大小,还是缩放后的大小。当然cocos2d-x里提供了对应的函数来完成这些操作。

 

getContentSize 函数用来获得节点原始的大小。

 

boundingBox 函数用来获得经过缩放和旋转之后的外框盒大小。

分享到:
评论

相关推荐

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

    本文将详细介绍在Cocos2d-x中使用到的三种坐标系:OpenGL坐标系、世界坐标系和节点坐标系,并结合锚点的概念和转换函数深入解析它们的应用。 首先,让我们从UI坐标系开始。UI坐标系是许多操作系统中通用的坐标系统...

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

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

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

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

    cocos2d-x文字描边Demo

    《cocos2d-x文字描边技术详解及实践》 在游戏开发中,视觉效果的呈现至关重要,其中文字描边是一种常见的美化手段,能够提升游戏界面的清晰度和视觉冲击力。Cocos2d-x作为一款广泛使用的跨平台2D游戏引擎,提供了...

    cocos2d-x obb 旋转碰撞 矩形

    在游戏开发领域,cocos2d-x是一款广泛使用的2D游戏引擎,它基于C++,并且支持多种平台,包括iOS、Android、Windows等。在cocos2d-x中,对象的碰撞检测是游戏物理系统的重要组成部分,对于创建交互式游戏至关重要。本...

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

    《cocos2d-x-2.2.3在安卓平台上的横竖屏自动切换技术解析》 cocos2d-x是一款强大的2D游戏开发框架,它支持多平台,包括iOS、Android、Windows等。在cocos2d-x 2.2.3版本中,开发者可能会遇到如何在Android设备上...

    cocos2d-x面试题DOCX文档

    cocos2d-x面试题DOCX文档 cocos2d-x是一款popular的游戏引擎,它提供了丰富的API和工具来帮助开发者快速地创建游戏。本文档总结了cocos2d-x面试题,涵盖了CCScene、CCLayer、CCSprite、CCNode、CCAction、...

    Cocos2D-X开发学习笔记-渲染框架之摄像机类的使用示例

    Cocos2D-X是一款强大的跨平台2D游戏开发框架,被广泛应用于移动设备上的游戏开发。在Cocos2D-X中,渲染框架是构建游戏场景和交互的核心部分,而摄像机(Camera)作为渲染框架的一部分,它控制着游戏场景的视角和观察...

    Cocos2d-x学习笔记之世界坐标系、本地坐标系、opengl坐标系、屏幕坐标系

    在Cocos2d-x游戏中,理解各种坐标系的概念至关重要,因为它们定义了游戏对象在屏幕上的位置和相互关系。下面我们将详细探讨世界坐标系、本地坐标系、OpenGL坐标系以及屏幕坐标系。 1. **世界坐标系 (World ...

    cocos2d-x的CCDirector类说明

    ### cocos2d-x的CCDirector类说明 #### 概述 `CCDirector`类是cocos2d-x引擎中的核心类之一,它负责管理游戏的主要流程控制,包括场景的切换、帧率的设置、游戏的启动与暂停等关键功能。在cocos2d-x引擎中,游戏的...

    CocosApp02.zip

    《Cocos2d-x开发环境搭建与设备坐标系解析》 Cocos2d-x是一款流行的开源游戏开发框架,尤其在2D游戏开发领域备受青睐。本文档将详细讲解如何使用"CocosApp02.zip"中的资源进行项目开发,并探讨设备坐标系在Cocos2d-...

    魔塔cocos2dx3.x版本

    《Cocos2d-x 3.x 版本在魔塔游戏开发中的应用详解》 Cocos2d-x 是一个开源的、跨平台的游戏开发框架,它基于C++编写,广泛应用于2D游戏、UI和各种图形应用的开发。在本文中,我们将深入探讨如何在魔塔游戏开发中...

Global site tag (gtag.js) - Google Analytics