日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Ubuntu >内容正文

Ubuntu

Ubuntu cocos2d-x 3.13版本游戏开发学习系列3 Cocos2d-x的坐标系

發(fā)布時(shí)間:2025/4/14 Ubuntu 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Ubuntu cocos2d-x 3.13版本游戏开发学习系列3 Cocos2d-x的坐标系 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.UI坐標(biāo)和OpenGL坐標(biāo)

  • UI坐標(biāo)值得是移動(dòng)設(shè)備,比如Andoroid手機(jī),它們的坐標(biāo)是以屏幕的左上角為原點(diǎn),向右為x軸正方向,向下為Y軸正方向
  • OpenGL坐標(biāo)是以屏幕的左下角為原點(diǎn),向上為Y軸正向,向右為X軸正向.
  • Cocos2d-x默認(rèn)坐標(biāo)為OpenGL坐標(biāo).

    2.世界坐標(biāo)和模型坐標(biāo)

    在游戲里面,世界坐標(biāo)就是相當(dāng)于整塊屏幕原點(diǎn)的坐標(biāo).也就是以屏幕的左下角為原點(diǎn)的OpenGL坐標(biāo)系.
    模型坐標(biāo)就是相對于屏幕里面的某個(gè)精靈的坐標(biāo)系,以精靈所在的位置為原點(diǎn),向右為X軸正方向,向上為Y軸正方向.

    3.4個(gè)API的解釋

    (1) Vec2 convertToNodeSpace(const Vec2& worldPoint). 將世界坐標(biāo)轉(zhuǎn)換為模型坐標(biāo)

    (2) Vec2 convertToNodeSpaceAR(const Vec2& worldPoint) 將世界坐標(biāo)轉(zhuǎn)換為模型坐標(biāo),AR代表錨點(diǎn)

    (3) Vec2 converToWorldSpace(const Vec2& nodePonit) 將模型坐標(biāo)轉(zhuǎn)換為世界坐標(biāo)

    (4) Vec2 convertTpWorldSpaceAR(const Vec2& nodePoint) 將模型坐標(biāo)轉(zhuǎn)換為世界坐標(biāo).AR表示錨點(diǎn)

    代碼演示如下:

    #include "HelloWorldScene.h"USING_NS_CC;Scene *HelloWorld::createScene() {// 'scene' is an autorelease objectauto scene = Scene::create();// 'layer' is an autorelease objectauto layer = HelloWorld::create();// add layer as a child to scenescene->addChild(layer);// return the scenereturn scene; }// on "init" you need to initialize your instance bool HelloWorld::init() {//// 1. super init firstif (!Layer::init()) {return false;}auto visibleSize = Director::getInstance()->getVisibleSize();Vec2 origin = Director::getInstance()->getVisibleOrigin();///創(chuàng)建Nodel1 寬度為300,高度為100.auto nodel1 = Sprite::create("node1.png");nodel1->setPosition(Point(400, 500));nodel1->setAnchorPoint(Point(0.5, 0.5));this->addChild(nodel1);//創(chuàng)建Nodel2 寬度為300,高度為100auto nodel2 = Sprite::create("node2.png");nodel2->setPosition(Point(300, 300));nodel2->setAnchorPoint(Point(1, 0));this->addChild(nodel2);//這個(gè)是以node1的原點(diǎn)生成的坐標(biāo)系,即node1左下角為原點(diǎn).auto nsPos = nodel1->convertToNodeSpace(nodel2->getPosition());//AR代表錨點(diǎn)的意思,這個(gè)是以node1的錨點(diǎn)為原點(diǎn).這個(gè)已經(jīng)在代碼里設(shè)置成了其中點(diǎn).精靈默認(rèn)錨點(diǎn)也是其中點(diǎn)auto nsArPos = nodel1->convertToNodeSpaceAR(nodel2->getPosition());log("模型2相當(dāng)于模型1原點(diǎn)坐標(biāo)的距離是:%f,%f", nsPos.x, nsPos.y);log("模型2相當(dāng)于模型1錨點(diǎn)坐標(biāo)的距離,看來是:%f,%f", nsArPos.x, nsArPos.y);//創(chuàng)建Nodel3 寬度為58,高度為59auto nodel3 = Sprite::create("orange.png");nodel3->setPosition(Point(100, 100));nodel3->setAnchorPoint(Point(1, 0));//吧node3添加到node1上去了,添加上去默認(rèn)就是以node1左下角為原點(diǎn),顯然此時(shí)node3將不可見,因?yàn)橐呀?jīng)抄錯(cuò)了nodel1->addChild(nodel3);log("node3相對于node1的坐標(biāo)是:{%f,%f}", nodel3->getPosition().x, nodel3->getPosition().y);auto ns13 = nodel1->convertToNodeSpace(nodel3->getPosition());log("node3相對于node1的坐標(biāo)是錯(cuò)誤做法:{%f,%f}", ns13.x, ns13.y); //這個(gè)也能看出其實(shí)轉(zhuǎn)化坐標(biāo)系其實(shí)是取node3的坐標(biāo)與node1的距離//總結(jié): 1.[node]->convertToNodeSpace 傳入的 [node]世界里面其他的node坐標(biāo),來求相對于[node]的距離// 2.[node]->convertToNodeSpaceAR是不在以[node]模型的原點(diǎn)為坐標(biāo),而是以其錨地為坐標(biāo).auto ws13 = nodel1->convertToWorldSpace(nodel3->getPosition());auto wsAr13 = nodel1->convertToWorldSpaceAR(nodel3->getPosition());log("node3相對于node1的坐標(biāo)在世界坐標(biāo)系的表示:{%f,%f}", ws13.x, ws13.y); //這個(gè)也能看出其實(shí)轉(zhuǎn)化坐標(biāo)系其實(shí)是取node3的坐標(biāo)與node1的距離log("node3相對于node1(錨點(diǎn))的坐標(biāo)在世界坐標(biāo)系的表示:{%f,%f}", wsAr13.x, wsAr13.y); //這個(gè)也能看出其實(shí)轉(zhuǎn)化坐標(biāo)系其實(shí)是取node3的坐標(biāo)與node1的距離return true; }

    結(jié)果為:

    模型2相當(dāng)于模型1原點(diǎn)坐標(biāo)的距離是:50.000000,-150.000000 模型2相當(dāng)于模型1錨點(diǎn)坐標(biāo)的距離,看來是:-100.000000,-200.000000 node3相對于node1的坐標(biāo)是:{100.000000,100.000000} node3相對于node1的坐標(biāo)是錯(cuò)誤做法:{-150.000000,-350.000000} node3相對于node1的坐標(biāo)在世界坐標(biāo)系的表示:{350.000000,550.000000} node3相對于node1(錨點(diǎn))的坐標(biāo)在世界坐標(biāo)系的表示:{500.000000,600.000000}

    轉(zhuǎn)載于:https://www.cnblogs.com/soongkun/p/6027248.html

    總結(jié)

    以上是生活随笔為你收集整理的Ubuntu cocos2d-x 3.13版本游戏开发学习系列3 Cocos2d-x的坐标系的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 中文无码熟妇人妻av在线 | 国产麻豆电影在线观看 | 无码国产精品一区二区色情男同 | 三叶草欧洲码在线 | 国产男女精品 | 26uuu欧美日本 | 婷婷色基地 | 美女黄色影院 | 欧美在线一级视频 | 国产成人精品a视频一区 | 久久婷婷丁香 | 不卡av电影在线 | 天天干狠狠 | 国产大片一区 | 骚视频在线观看 | 久久国产精品波多野结衣av | 日韩亚洲视频在线观看 | 免费黄色在线看 | 久草手机在线 | 亚洲精品在线看 | 男人的天堂av片 | 在线香蕉视频 | 肥婆大荫蒂欧美另类 | 日韩二三区 | 中文在线a在线 | 在线观看免费视频一区二区 | 999视频在线 | 天天综合亚洲 | 国产日韩亚洲 | 在线观看少妇 | 色99在线 | 日韩精品一区二区三区免费视频 | 国产又黄又骚 | 亚洲先锋影音 | 久久久综合精品 | 无码少妇一区二区三区 | 看国产毛片 | 国产成人精品一区二区 | 国产传媒第一页 | 国产三级三级三级三级三级 | 欧美综合在线视频 | 日韩精品网站 | 欧美a级肉欲大片xxx | 国产视频123区 | 鲁一鲁在线视频 | 伊人网综合 | av射进来| 国产1区| 中国美女性猛交 | 68日本xxxxxⅹxxx59 | 中文字幕在线视频观看 | 伊人春色网 | 99在线精品视频免费观看20 | 欧美日韩国产片 | 欧美一区不卡 | 嫩色av | 亚洲AV成人无码精品久久盆瓶 | 色爽爽爽爽爽爽爽爽 | 国产嫩bbwbbw高潮 | 亚洲成人免费在线观看 | 亚洲欧美日韩精品在线 | 一区二区三区四区在线 | 成人免费黄色大片 | free欧美性69护士呻吟 | 四级黄色片 | 伊人色播 | 秋霞免费av | 日本少妇吞精囗交视频 | 一区二区三区福利视频 | 欧美色婷婷 | 少妇人妻邻居 | 日韩视频一区二区 | 四虎色播 | 久久国产在线视频 | 色一情一交一乱一区二区三区 | 日本男女激情视频 | yy111122少妇光屁股影院 | 亚洲一区二区三区电影在线观看 | 欧美日韩亚 | 久久久性色精品国产免费观看 | 丰满饥渴老女人hd | 亚洲欧美动漫 | 国产午夜精品福利视频 | 男女考妣视频 | 亚洲一级网站 | 丰满人妻一区二区三区免费 | 日本在线视频中文字幕 | 日本福利一区二区 | 自拍偷拍激情视频 | 色老头影视 | 成人精品999 | 日本久久久久久 | 久久er99热精品一区二区介绍 | 欧美乱码精品一区二区三区 | 成人激情在线观看 | av中文资源在线 | 91精品国产日韩91久久久久久 | 日日碰狠狠添天天爽无码av | 天堂网在线观看 |