• Cocos Creator 坐标系 (convertToWorldSpaceAR、convertToNodeSpaceAR)


    版本:2.3.4

    参考
    cocos教程:坐标系和变换

    cocos的坐标系和其他引擎不一样。

    Egret中坐标系

    舞台的原点在左上角

    组件的原点也在左上角

    角度顺时针旋转为正数,逆时针旋转为负数

    Laya中坐标系

    和Egret一致

    Cocos坐标系

    和Laya、Egret的y轴朝下的,cocos的y轴是朝上的。

    角度顺时针是负数,逆时针是正数。

    而且cocos新建组件锚点0.5居中

    本地坐标转换到世界坐标

    //将节点坐标系下的一个点转换到世界空间坐标系。
    convertToWorldSpaceAR  
    
    //将一个相对于节点左下角的坐标位置转换到世界空间坐标系。
    //这个 API 的设计是为了和 cocos2d-x 中行为一致,更多情况下你可能需要使用 convertToWorldSpaceAR
    convertToWorldSpace
    

      

    cocos提供了2个API将本地坐标转换到世界坐标,其中convertToWorldSpace已经不推荐使用

     如上图

    Canvas1560x720,锚点(0.5,0.5)

    一个白色方块200x200,锚点(0.5,0.5),在距离左下角(200,200)的位置

    一个红色方块100x100,锚点(0.5, 0.5),在白色方块内部,距离白色方块中心点(50,50)

    局部坐标

    console.log(white.x, white.y);  //-580 -160
    console.log(red.x, red.y);      //50 50
    

      

    局部转全局坐标

    let whiteWorldPos = white.convertToWorldSpaceAR(white.position);
    console.log(whiteWorldPos.x, whiteWorldPos.y);  //-379.78647686832744 40
    
    let redWorldPos = red.convertToWorldSpaceAR(red.position);
    console.log(redWorldPos.x, redWorldPos.y);      //300.21352313167256 300
    

      

    局部转全局坐标

    let whiteWorldPos = white.parent.convertToWorldSpaceAR(white.position);
    console.log(whiteWorldPos.x, whiteWorldPos.y);  //200.21352313167256 200
    
    let redWorldPos = red.parent.convertToWorldSpaceAR(red.position);
    console.log(redWorldPos.x, redWorldPos.y);      //250.21352313167256 250
    

    全局转局部坐标

    let redLocalPos = red.convertToNodeSpaceAR(new cc.Vec2(250,250));
    console.log(redLocalPos); //0,0
    

      

    全局转局部坐标

    let redLocalPos = red.parent.convertToNodeSpaceAR(new cc.Vec2(250,250));
    console.log(redLocalPos); //50,50
    

      

  • 相关阅读:
    厕所惊魂
    感谢协助学生返校,邀请交警合影留念
    小丑杀人
    东芝Toshiba e-STUDIO打印身份证
    JavaScript
    html
    pymysql模块
    线程
    队列与进程池
    网络编程
  • 原文地址:https://www.cnblogs.com/gamedaybyday/p/13090533.html
Copyright © 2020-2023  润新知