zoukankan      html  css  js  c++  java
  • cocos2d-x坐标系

    项目中有个需求“刮刮卡”,在手指触摸屏幕时,需要动态检查当前触摸的点是否“碰”到某个卡了,如果碰到了就把它显示出来。这里就需要了解一下IOS的坐标系统与OpenGL的坐标系统了

     

    常见的三种坐标系:

     

    UI坐标系,起点(0, 0),位于屏幕左上角, 也称屏幕坐标系,如下图所示

     

     

    Direct3D坐标系,使用的是左手坐标系(Left-hand Cartesian Coordinate System),Z轴向里

     

    OpenGL的坐标系,右手坐标系(Right-hand Cartesian Coordinate System),Z轴向外

     

    如果在2D的的世界里,我们只讨论X、Y,实际上就变成二种坐标系了:以左上角为原点、以左下角为原点。这样来看的话,它们唯一的区别就在于Y轴,也就是说它们之前的转换只需要使用(winHeight – y)便可得到在另外一种坐标系的坐标。

     

    cocos2d-x返回的点,是它在UI坐标系中的位置,使用CCPoint pt = pTouch->getLocationInView()获得UI坐标系中的坐标点,然后将其转换为OpenGL坐标系的坐标CCDirector::sharedDirector()->convertToGL(touchLocation);

     

    使用convertToWorldSpace方法,可将相应的卡片坐标转换为OpenGL中的坐标,然后对它的width、height处理,就可以得到该卡片所占的区域。node的getPosition()只是获得该节点相对它的你节点的位置,所以convertToWorldSpace方法的调用应该如下所示:

    nodeParent->convertToWorldSpace(node->getPosition())

     

     

    关于cocos2d-x的坐标系的更多信息,可参考这里:

    http://www.cocos2d-x.org/wiki/Coordinate_System

  • 相关阅读:
    07 总结ProgressDialog 异步任务
    1. vim 的安装及配置
    debian 源设置 ( apt-get 不能安装)
    在Debian中安装VNC Server
    让BB-Black通过usb0上网
    常用的一些 linux 指令
    Linux下同一目录内文件和目录为什么不能同名?
    beaglebone black 与电脑互传文件(夹)
    永久修改 putty字体大小
    Beaglebone Black的引脚分配
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/3431779.html
Copyright © 2011-2022 走看看