• 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

  • 相关阅读:
    理解javascript 对象,原型对象、闭包
    JSON数据理解
    css 盒模型相关样式
    神奇的CSS3选择器
    设计模式六大原则
    java反射机制性能优化
    一份关于jvm内存调优及原理的学习笔记
    浅谈http请求数据分析
    Apache+Tomcat部署负载均衡(或集群)
    同台电脑部署多组Tomcat负载均衡(或集群)
  • 原文地址:https://www.cnblogs.com/meteoric_cry/p/3431779.html
Copyright © 2020-2023  润新知