注:ccp是cocos2dx中的一个宏定义,#define ccp(__X__,__Y__)CCPointMake((float)__X__, (float)__Y__),在此文章中表示坐标信息

1、笛卡尔坐标系

你可能在学校的几何学上已经知道笛卡尔坐标系。如果你忘记了,下面的图片可以让你回忆一下:

有3中类型的坐标系在游戏开发中你会用的到。

1)UI坐标系:

一般用于iso、android、windows sdk中:

原点(x=0,y=0)在左上角。

x方向从左侧向右侧递增。

y方向从屏幕顶部向底部递增。

2)Direct3D坐标系

DirectX用左手笛卡尔坐标系

3)OpenGL和Cocos2D坐标系

Cocos2dx和OpenGL一样用右手坐标系,在二维世界里,我们仅仅使用x轴和y轴,那么在cocos2d游戏中:

原点在屏幕的左下角,意味着屏幕在右手坐标系的第一象限中。

X轴从屏幕左侧向右侧延伸

Y轴从屏幕底部向顶部延伸

底下有张图片可以帮你理解cocos2dx坐标系:

2 父类和子类:

每一个继承自CCNode的类都有一个锚点属性。当决定如何绘制对象(Sprite,Layer,一起其他的)的时候,cocos2d-x将会考虑位置信息以及锚点信息。并且,当旋转一个物体的时候,cocos2d-x也会绕着锚点旋转。

我们创建一个灰色的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 Point3    parent->setPosition(ccp(100, 100));4    parent->setAnchorPoint(ccp(0, 0));5    addChild(parent);67    //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),因此,子对象显示在如图所示位置:

6、锚点

锚点被用于位置和旋转物体。锚点是相对坐标(也就是一个百分比),经常被用来对应一个物体内的点。例如,锚点是ccp(0.5,0.5)(表示x方向在物体50%的位置,y方向50%的位置)对应物体的中心。当设置物体位置的时候,调用setPositon时,锚点信息也会在坐标系中展示。相同的,当转动物体,物体将会随锚点转动。

例如,如下精灵有一个锚点cpp(0,0)并且位置在ccp(0,0):

因此,精灵被放置在屏幕左下角。

1// create sprite
2CCSprite* sprite = CCSprite::create("bottomleft.png");
3sprite->setAnchorPoint(ccp(0, 0));// Anchor Point
4sprite->setPosition(ccp(0,0));
5addChild(sprite);
 

在如下的例子中,展示了锚点坐标的相对性,锚点被赋值为ccp(0.5,0.5),位于精灵的中心。

1// create sprite
2CCSprite* sprite = CCSprite::create("center.png");
3sprite->setAnchorPoint(ccp(0.5, 0.5));// Anchor Point
4sprite->setPosition(ccp(0,0));
5addChild(sprite);

正如你所看到的的,精灵的中心位置被放置在了坐标原点(0,0)。这也就是说锚点不是一个像素值。锚点的X和Y值是相对于该节点的大小。

你也可以设置锚点为ccp(0.3,0.3),物体左下角锚点是(0,0),右上角是(1,1),因此ccp(0.3,0.3)表示在X方向上30%位置,Y方向上30%位置。

转载请注明:http://blog.csdn.net/qinning199/article/details/11182511

转载于:https://www.cnblogs.com/pangblog/p/3306380.html

二、Cocos2dx概念介绍(游戏开发中不同的坐标系,cocos2dx锚点)相关推荐

  1. 18、Cocos2dx 3.0游戏开发找小三之cocos2d-x,请问你是怎么调度的咩

    重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/30478251 Cocos2d 的一大特色就是提供了事件 ...

  2. 游戏开发中的数据表示

    声明:本文内容源自腾讯游戏学院程序公开课_服务端 一.数据表示的基础 什么是数据表示? 数据是信息的载体. 数据表示是一组操作,可以描述.显示.操作信息. 数据表示的要素 IDL - 接口描述语言 I ...

  3. 游戏开发中的物理之射线投射

    游戏开发中的物理之射线投射 介绍 空间 进入空间 Raycast查询 碰撞异常 防撞面罩 屏幕上的3D射线投射 介绍 游戏开发中最常见的任务之一是投射光线(或自定义形状的物体)并检查其撞击.这样就可以 ...

  4. 3D和2D游戏开发技术里的坐标系总结

    from:http://www.liketocode.com/coding/208.htm 最近在做unity3d开发,坐标系的概念把自己搞得好迷糊,发现理解好坐标系的东西的确对一个新手来说是必经之路 ...

  5. 6、Cocos2dx 3.0游戏开发的基本概念找个小三场比赛

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...

  6. 6、Cocos2dx 3.0游戏开发找小三之游戏的基本概念

    重开发人员的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/27689713 郝萌主友情提示: 人是习惯的产物,当你 ...

  7. 游戏开发中的物理介绍

    游戏开发中的物理介绍 碰撞对象 物理过程回调 碰撞层和蒙版 GUI示例 代码示例 Area2D StaticBody2D RigidBody2D KinematicBody2D 在游戏开发中,您通常需 ...

  8. 游戏开发中的人工智能(二):追逐和闪躲

    接上文 游戏开发中的人工智能(一):游戏人工智能简介 本文内容:讨论基本的追逐和闪躲技术,以及进级的拦截技术.我们也谈及这些技术在砖块环境和连续环境中的变化. 追逐和闪躲 本章的焦点是追逐和闪躲,这是 ...

  9. [命令模式]在游戏开发中的应用

    设计模式中的每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复劳动. 一个设计模式,它的服务对象是高层模块,在设计模式中称为客 ...

  10. 【转载】【《Real-Time Rendering 3rd》 提炼总结】(九) 第十章 · 游戏开发中基于图像的渲染技术总结

    本文由@浅墨_毛星云 出品,转载请注明出处.   文章链接: http://blog.csdn.net/poem_qianmo/article/details/78309500 这是一篇近万字的总结式 ...

最新文章

  1. vscode 常用插件安装
  2. 核心业务系统的内容讨论(管理篇)(转载)
  3. 企业防火墙代替路由器_「防火墙技术连载」基础知识篇 1、什么是防火墙
  4. python源码编译 mingw_在windows上用gcc(mingw32)从命令行编译Cython扩展
  5. file_exists函数总是返回false
  6. postgreSQL除法保留小数
  7. 多线程程序设计学习(1)之多线程程序的评量标准
  8. 系统评测指标:准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F-Score
  9. 微服务 注册中心的作用_微服务-服务与注册中心
  10. JAVA实现经纬度转换小数的工具类
  11. 使用插件导入Excel表到数据库
  12. 《冬月集:自渡》 一个会写诗的程序员
  13. Raspberry PI 常用命令
  14. 从头实现YOLOv3:第4部分
  15. 《Learning without Forgetting》 论文阅读笔记
  16. vm无法连接虚拟设备sata01_无法连接虚拟设备sata0:1怎样解决?
  17. android手机8g内存够用嘛,8G 运存已经过时了?手机运存到底要多大才够用?
  18. 【pcre 依赖】linux安装pcre 依赖
  19. Python1.语言基本要素上(郭炜老师python大学mooc)
  20. Flask HTML模板引擎详解

热门文章

  1. Mac电脑不能识别文本和命令的解决方法
  2. 如何为Mac视频添加模糊效果?
  3. 俄罗斯一款地图软件无意曝光300多个军事基地
  4. 阿里云发布异构计算产品家族,你可以在上面模拟核爆炸
  5. RedHat 救援模式下排错
  6. Struts1.x系列教程(19):LookupDispatchAction类处理一个form多个submit
  7. spring中的BeanFactory和FactoryBean的区别与联系
  8. 这月绩效差点没了!搞了一个“新人拼团”活动遇到黑产,搭进去了8台服务器......
  9. 互联网公司忽悠员工的黑话,套路太深了。。
  10. 阿里巴巴架构师,讲透2亿用户的钉钉系统架构实践