Cocos2d-x v3.1 坐标系统(五)

为了能够更好的布局以及了解对象所在的位置,我们必须对Cocos2d-x中的坐标有详细的了解,本篇文章主要就是了解Cocos中用到的坐标系统。学过数学的人都知道“笛卡儿坐标系统”,在“笛卡儿坐标系统”中又分为了左手坐标系和右手坐标系。我们所了解的Direct3D和OpenGL分别使用了“左手坐标系统”和“右手坐标系统”,那Cocos2d-x使用的是什么样的做坐标系统呢?由于Cocos2d-x是基于OpenGL开发的当就使用了右手坐标系统。由于Cocos2d-x是一个2D的游戏引擎所有我们只用到了X和Y轴。

前面只是普及了哈坐标系统的概念,那究竟在Cocos2d-x中有几个坐标系统呢?

1. OpenGL坐标系

坐标原点在屏幕的左下方,X轴向右为正,Y轴向上为正。如下图:

图.1

2. 世界坐标系

也叫绝对坐标系,原点与OpenGL坐标系原点位置一致。“世界”指游戏世界,它建立了描述其他坐标系所需要的参考标准。如图.1

3. 屏幕坐标系统

也叫UI坐标系,主要用于我们在触摸屏幕时,那个触摸点就是传入的屏幕坐标,原点在左上角X轴向右为正,Y轴向下为正。

图.2

4. 本地坐标系

也叫相对坐标系,它是相对于父节点的。它的坐标原点在父对象的左下角。假设我们在场景中有两个对象Node1和Node2.Node1是Node2的父节点,Node1的位置是Vec2(200, 200)。Node2的位置为Vec(0,0),锚点为Vec2(0.5, 0.5),此时Node2的位置就是相对位置,它是相对于Node1的。效果如图.3所示:

图.3

锚点

锚点就是对象(Node及派生对象)的一个定位点,我们对于对象的定位,旋转都是基于锚点的。默认对象的锚点是Vec2(0.5, 0.5)也就是在对象的中心。如下图.4所示:

图.4

中间那个红点就是锚点,当然我么也可以把锚点设置到其他位置。比如我们将它的锚点设置为Vec2(0, 0)。也就是对象的左下角。如图.5所示:

图.5

Cocos2d-x v3.1 坐标系统(五)的更多相关文章

  1. Cocos2D中Action的进阶使用技巧(二)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 上回说到解决办法是使用CCTargetedAction类. C ...

  2. [置顶] android LBS的研究与分享(附PPT)

    早上起床后想想以前的工作有什么可以分享的... 两年前,前公司在做一个陌生人交友的社交软件(比陌陌还早),需要研究LBS的相关工作(这里面主要研究的是Google定位)... 一.简要调研结果 很多 ...

  3. Cocos2d-android游戏引擎-介绍

    一.游戏引擎概念 什么是游戏引擎       游戏引擎是指一些已编写好的可编辑游戏系统或者一些交互式实时图像应用程序的核心组件.这些系统为游戏设计者提供各种编写游戏所需的各种工具,其目的在于让游戏设计 ...

  4. 深入解读Service Mesh背后的技术细节

    在Kubernetes称为容器编排的标准之后,Service Mesh开始火了起来,但是很多文章讲概念的多,讲技术细节的少,所以专门写一篇文章,来解析Service Mesh背后的技术细节. 一.Se ...

  5. Django之admin管理数据库,cookie验证及分页设置

    一.admin管理数据库 1)models.py创建class类表 class Book(models.Model): name=models.CharField(max_length=) price ...

  6. keystone部署及操作

    目录 一  版本信息 二  部署keystone 三  keystone操作 四  验证 五  创建脚本 六  keystone使用套路总结 一.版本信息 官网http://docs.openstac ...

  7. Cocos2D将v1.0的tileMap游戏转换到v3.4中一例(五)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 为了暂时不影响原来的cat移动方法,我们在CatSprite.m ...

  8. Cocos2D v2.0至v3.x简洁转换指南(五)

    资源管理 如果你没有计划用SpriteBuilder,你可以继续使用后缀去管理各种不同解决方案中的图像. 首先,你需要在AppDelegate.m中将[CCBReader configrueCCFil ...

  9. 【D3.V3.js系列教程】--(十五)SVG基本图形绘制

    [D3.V3.js系列教程]--(十五)SVG基本图形绘制 1.path <!DOCTYPE html> <html> <head> <meta charse ...

随机推荐

  1. 介绍一款“对话框”组件之 “artDialog”在项目中的使用

    在实际开发项目中经常会用到对话框组件,提示一些信息.其实有很多,例如:在项目中常用到的“Jquery-UI.Jquery-EasyUI”的.Dialog,他们也很强大,Api文档也很多.今天就介绍一款 ...

  2. EasyUI 在mvc中的引入与使用

    使用步骤: 一.先引入: 1.easyui下载,可以去官方网站去下载最新版EasyUI官方下载地址:http://www.jeasyui.com/download/index.php 2.下载后解压, ...

  3. rxjs入门6之合并数据流

    一 concat,merge,zip,combineLatest等合并类操作符 以上操作符在版本6中已经只存在静态方法,不能在pipe中使用. import {concat,merge,zip,com ...

  4. 剑指Spring源码(三)俯瞰Spring的Bean的生命周期(大众版)

    距离上一次写Spring源码解析,已经过去了快要好几个月了,主要原因还是Spring的源码解析类文章太难写了,不像我先前写的什么CAS源码,AQS源码,LinkedBlockingQueue等等,这些 ...

  5. Python中读取,显示,保存图片的方法

    一 opencv import cv2 as cv # load img = cv.imread(imagepath) # shape=(height, width, channel) h,w,c = ...

  6. Java web错误汇总

    环境: 电脑:win 10 IDE: Eclipse Java EE IDE for Web Developers. Version: Luna Service Release 2 (4.4.2) B ...

  7. Hadoop3.0 DataNode启动不成功——java.net.BindException: Port in use: localhost:0 Caused by: java.net.BindException: Cannot assign requested address解决办法

    一.问题出现的原因 启动Hadoop分布式环境时出现主节点的namenode.secondarynamenode启动成功,但是Worker节点datenode启动不成功. hadoop@master$ ...

  8. 数据返回正常 而header头Status=500

    访问接口数据成功返回,但header头Status Code:500,而调用接口的html用ajax访问一直返回500服务器错误,并且ajax一直走error,走不到success中,错误返回状态是连 ...

  9. giihub上的关于js的43道题目

    参考 https://github.com/lydiahallie/javascript-questions

  10. Apache服务器配置虚拟域名

    我在别处发的帖子 http://www.52pojie.cn/thread-599829-1-1.html