精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Cocos2d-x坐標研究

移動開發 iOS 游戲開發
蘋果的Quarze2D使用的是不同的坐標系統,原點在屏幕左上角,x軸向右,y軸向下。ios的屏幕觸摸事件CCTouch傳入的位置信息使用的是該坐標 系。因此在cocos2d中對觸摸事件做出響應前需要首先把觸摸點轉化到GL坐標系。可以使用CCDirector的convertToGL來完成這一轉化。

GL坐標系

Cocos2D以OpenglES為圖形庫,所以它使用OpenglES坐標系。GL坐標系原點在屏幕左下角,x軸向右,y軸向上。

屏幕坐標系

蘋果的Quarze2D使用的是不同的坐標系統,原點在屏幕左上角,x軸向右,y軸向下。ios的屏幕觸摸事件CCTouch傳入的位置信息使用的是該坐標 系。因此在cocos2d中對觸摸事件做出響應前需要首先把觸摸點轉化到GL坐標系。可以使用CCDirector的convertToGL來完成這一轉化。

世界坐標系

世界坐標系也叫做絕對坐標系,是游戲開發中的概念,它建立了描述其他坐標系所需要的參考框架。我們能夠用世界坐標系來描述其他坐標系的位置,而不能用更大的,外部的坐標系來描述世界坐標系。cocos2d中的元素是有父子關系的層級結構,我們通過CCNode的position設定元素的位置使用的是相對 與其父節點的本地坐標系而非世界坐標系。***在繪制屏幕的時候cocos2d會把這些元素的本地坐標映射成世界坐標系坐標。世界坐標系和GL坐標系一致, 原點在屏幕左下角,x軸向右,y軸向上。

本地坐標系

本地坐標系也叫做物體坐標系,是和特定物體相關聯的坐標系。每個物體都有它們獨立的坐標系,當物體移動或改變方向時,和該物體關聯的坐標系將隨之移動或改變方向。例如坐出租車的時候對駕駛員說“向左轉”,我們使用的是車的物體坐標系,“前”、“后”、“左”、“右”只有在物體坐標系中才有意義。但如果我們說 “向東開”,我們使用的就是世界坐標系了,無論是車內還是車外的人都知道應該向什么方向開。CCNode的position使用的就是父節點的本地坐標 系,它和GL坐標系也是一致的,x軸向右,y軸向上,原點在父節點的左下角。如果父節點是場景樹中的頂層節點,那么它使用的本地坐標系就和世界坐標系重合了。在CCNode對象中有幾個方便的函數可以做坐標轉換:convertToWorldSpace方法可以把基于當前節點的本地坐標系下的坐標轉換到世 界坐標系中。convertToNodeSpace方法可以把世界坐標轉換到當前節點的本地坐標系中。注意這些方法轉換的是基于當前節點的坐標,而一個節 點的position所使用的坐標是基于它父節點的本地坐標,因此我們要把node的位置轉換到世界坐標系中應該調用父節點的 convertToWorldSpace函數 node->getParent()->convertToWorldSpace(node->getPosition)。幾 乎所有的游戲引擎都會使用本地坐標系而非世界坐標系來指定元素的位置,這樣做的好處是當計算物體運動的時候使用同一本地坐標系的元素可以作為一個子系統獨 立計算,***再加上坐標系的運動即可,這是物理研究中常用的思路。例如一個在行駛的車廂內上下跳動的人,我們只需要在每幀繪制的時候計算他在車廂坐標系中 的位置,然后加上車的位置就可以計算出人在世界坐標系中的位置,如果使用單一的世界坐標系,人的運動軌跡就變復雜了。

錨點

每一個CCNode都有一個錨點(anchorpoint),錨點指定了texture上和所在節點原點(也就是position所表示的點)重合的點的位 置,因此只有在節點使用了texture的情況下,錨點才有意義。錨點的默認值是(0.5,0.5),它表示的并不是一個像素點,而是一個乘數因子。 (0.5, 0.5)表示錨點位于texture長度乘以0.5和寬度乘以0.5的地方,即texture的中心。改變錨點的值并不會改變節點的位置 (position),雖然可能看起來節點的圖像位置發生了變化,其實變化的只是texture相對于position的位置,相當于你在移動節點里面的 texture,而非節點本身。如果把錨點設置成(0,0),texture的左下角就會和節點的position點重合,這可能使得元素定位更為方便, 但會影響到元素的縮放和旋轉等一系列變換,所以不推薦這么做。因此在錨點為默認值(0.5,0.5)的情況下要把一個精靈放置到屏幕底部中央,應該如下設 置position:

  1. [plain] view plaincopy CGSize screenSize = [[CCDirectorsharedDirector] winSize]; 
  2. float imageHeight = player.contentSize.height; 
  3. player.position = CGPointMake(screenSize.width / 2,imageHeight / 2); 

個人研究

今天晚上,對cocos2d-x里面的四個表示坐標的方法進行了一下研究,特意做了下筆記,如下:

CCPoint convertToNodeSpace(const CCPoint& worldPoint);

CCPoint convertToWorldSpace(const CCPoint& nodePoint);

CCPoint convertToNodeSpaceAR(const CCPoint& worldPoint);

CCPoint convertToWorldSpaceAR(const CCPoint& nodePoint);

在理解這個之前,要多世界坐標和本地坐標有一定的理解,

GL坐標系Cocos2D以OpenglES為圖形庫,所以它使用OpenglES坐標系。GL坐標系原點在屏幕左下角,x軸向右,y軸向上。

屏幕坐標系蘋果的Quarze2D使用的是不同的坐標系統,原點在屏幕左上角,x軸向右,y軸向下。ios的屏幕觸摸事件CCTouch傳入的位置信息使用的是該坐標 系。因此在cocos2d中對觸摸事件做出響應前需要首先把觸摸點轉化到GL坐標系。可以使用CCDirector的convertToGL來完成這一轉化。

世界坐標系也叫做絕對坐標系,cocos2d中的元素是有父子關系的層級結構,我們通過CCNode的position設定元素的位置使用的是相對與其父節點的本地坐標系而非世界坐標系。***在繪制屏幕的時候cocos2d會把這些元素的本地坐標映射成世界坐標系坐標。世界坐標系和GL坐標系一致,原點在屏幕左下角,

本地坐標系本 地坐標系也叫做物體坐標系,是和特定物體相關聯的坐標系。每個物體都有它們獨立的坐標系,當物體移動或改變方向時,和該物體關聯的坐標系將隨之移動或改變 方向。比如用cocos2d-x創建了個矩形colorLayer:CCRect(10,10,100,100),這是的本地坐標系為以(10,10)為 坐標原點,x軸向右,y軸向上。如果創建了一個CCSprite,錨點為(0.5,0.5),位置為(100,100),size為(40,40),這時的本地坐標系為以(80,80)為坐標原點,x軸向右,y軸向上。總之,本地坐標系原點為node的左下角坐標

接下來,convertToNodeSpace:調用CCPoint point = node1->convertToNodeSpace(node2->getPosition());

將node2的坐標轉化成相對于node1的本地坐標

cocos2d-x 坐標研究 - zjfzjf - zjfzjf

比如坐標如上圖所示,node1的錨點為(0,0),node2的錨點為(1,1),轉化之后,node的坐標變成了(-25,-60)

下頁為您接續帶來Cocos2d-x個人研究

#p#

而convertToWorldSpace:調用CCPoint point = node1->convertToWorldSpace(node2->getPosition());

cocos2d-x 坐標研究 - zjfzjf - zjfzjf

是將node的坐標轉化成相對于node1的世界坐標,如上圖所示:首先將node1的坐標當做世界坐標,然后讓node2的坐標位置重置成相對于node1的世界坐標,也就是(15,20)

convertToNodeSpaceAR,就是把node1的坐標系原點設置在錨點的位置,這里的錨點是(0,0)所以轉化之后的坐標系位置和上面的convertToNodeSpace一樣,結果也是一樣的,convertToWorldSpaceAR同理

測試:

CCSprite *sprite1 = CCSprite::spriteWithFile("CloseNormal.png");

sprite1->setPosition(ccp(20,40));

sprite1->setAnchorPoint(ccp(0,0));

this->addChild(sprite1);

CCSprite *sprite2 = CCSprite::spriteWithFile("CloseNormal.png");

sprite2->setPosition(ccp(-5,-20));

sprite2->setAnchorPoint(ccp(1,1));

this->addChild(sprite2);

CCPoint point1 = sprite1->convertToNodeSpace(sprite2->getPosition());

CCPoint point2 = sprite1->convertToWorldSpace(sprite2->getPosition());

CCPoint point3 = sprite1->convertToNodeSpaceAR(sprite2->getPosition());

CCPoint point4 = sprite1->convertToWorldSpaceAR(sprite2->getPosition());

CCLog("position = (%f,%f)",point1.x,point1.y);

CCLog("position = (%f,%f)",point2.x,point2.y);

CCLog("position = (%f,%f)",point3.x,point3.y);

CCLog("position = (%f,%f)",point4.x,point4.y);

運行結果:

position = (-25.000000,-60.000000)

position = (15.000000,20.000000)

position = (-25.000000,-60.000000)

position = (15.000000,20.000000)

和預算的一樣

這里在將sprite1的錨點設置成(0.5,0.5),對convertToNodeSpaceAR和convertToWorldSpaceAR進行了進一步的測試

sprite1->setAnchorPoint(ccp(0.5,0.5));

sprite1->setPosition(ccp(100,100));

CCPoint point5 = sprite1->convertToNodeSpaceAR(sprite2->getPosition());

CCPoint point6 = sprite1->convertToWorldSpaceAR(sprite2->getPosition());

CCLog("position = (%f,%f)",point5.x,point5.y);

CCLog("position = (%f,%f)",point6.x,point5.y);

運算結果:

size = (40.000000,40.000000)

position = (-105.000000,-120.000000)

position = (95.000000,80.000000)

分析:重置的sprite1的坐標為(100,100),錨點為(0.5,0.5)所以對于convertToNodeSpaceAR和convertToWorldSpaceAR這兩個方法的坐標系為原點(100,100),所以用convertToNodeSpaceAR轉化之后的坐標為(-105,-120)用convertToWorldSpaceAR化之后的坐標為(95,80),和運算結果一樣

責任編輯:閆佳明 來源: blog.163
相關推薦

2013-05-22 14:38:44

iOS開發Cocos2d-x坐標系統

2011-12-12 10:40:08

Cocos2d-X游戲開發開發環境

2012-04-17 12:38:46

cocos2d-x

2012-04-17 12:44:38

cocos2d-x

2013-04-16 10:02:47

cocos2d-x懶人Android開發

2013-12-03 10:58:50

Cocos2D-X磚塊地圖

2012-04-17 12:58:44

Cocos2D-X

2013-06-03 17:04:20

CocoStudioCocos2D-X添加CocoStudi

2014-07-31 16:57:30

2012-02-19 20:10:23

Cocos2d-x fCocos2dWindows Pho

2012-04-17 10:59:31

cocos2d-x

2012-04-17 12:47:27

cocos2d-x

2012-04-17 10:06:08

cocos2d-x

2014-08-13 10:07:02

游戲引擎

2012-04-17 13:12:00

2013-11-13 16:31:32

Cocos2d-x

2013-06-07 14:06:52

移動開發Android開發cocos2d-x

2012-05-09 10:09:57

Cocos2d-xAndroidiOS

2014-06-10 11:12:34

Cocos2d-x

2014-07-31 17:04:25

點贊
收藏

51CTO技術棧公眾號

97成人资源| 精品人妻一区二区三区浪潮在线| 伊人久久大香线蕉| 欧美伊人久久久久久久久影院| 亚洲精品不卡| 超碰在线播放97| 国产精品一区毛片| 插插插亚洲综合网| 国内精品久久99人妻无码| 日韩国产一二三区| 午夜精品久久久久久久久久| 欧洲一区二区在线观看| 99精品久久久久久中文字幕| 国产美女一区| 欧美另类99xxxxx| 久久精品国产亚洲AV熟女| 精品国产亚洲一区二区在线观看| 偷窥国产亚洲免费视频| 影音先锋在线亚洲| 免费理论片在线观看播放老| 韩国成人在线视频| 国产91精品久久久| 特一级黄色录像| 国产日产一区| 亚洲国产精品嫩草影院久久| 精品国产鲁一鲁一区二区三区| 综合日韩av| 夜夜精品视频一区二区 | 18国产免费视频| 国内激情久久| 久久精品国亚洲| 干b视频在线观看| 国产一级成人av| 日韩免费观看高清完整版在线观看| 午夜dv内射一区二区| 97超碰在线免费| 伊人婷婷欧美激情| 午夜啪啪免费视频| av成人手机在线| 久久久午夜精品| 久久青青草原一区二区| 蜜桃视频久久一区免费观看入口| 国内精品伊人久久久久av一坑 | 澳门久久精品| 欧美一区二区三区不卡| 日韩av片专区| 国内自拍亚洲| 欧美女孩性生活视频| 亚洲国产精品毛片av不卡在线| 2020国产在线| 午夜视频一区二区| 欧美视频在线免费播放| a级大胆欧美人体大胆666| 一区二区三区不卡在线观看| 免费日韩在线观看| 色呦呦在线看| 一区二区三区免费| 久久成人福利视频| 九九精品调教| 午夜精品久久久久久不卡8050| 国产成人永久免费视频| 丰满大乳少妇在线观看网站| 亚洲一区二区三区四区在线| 人妻少妇精品久久| 自由日本语热亚洲人| 色婷婷一区二区| 欧美精品成人网| 久久亚洲国产精品尤物| 欧美精品三级日韩久久| 岛国大片在线免费观看| 国产成人在线中文字幕| 日韩成人av一区| 无码人妻精品一区二区中文| 色综合五月天| 欧美大片免费看 | 在线观看中文字幕不卡| xx欧美撒尿嘘撒尿xx| 国模大尺度视频一区二区| 精品日韩99亚洲| 久久亚洲AV成人无码国产野外| 国产99久久| 久久久999精品| 国产福利久久久| 性欧美xxxx大乳国产app| 国产精品美女久久久免费| av中文字幕观看| 91婷婷韩国欧美一区二区| 亚洲高清在线播放| 污视频在线看网站| 色综合久久天天综合网| 国产欧美激情视频| 加勒比色老久久爱综合网| 亚洲午夜色婷婷在线| 免费毛片在线播放免费| 玖玖在线精品| yellow视频在线观看一区二区| 色视频在线观看免费| 一区在线中文字幕| 久在线观看视频| 电影中文字幕一区二区| 亚洲精品久久久久久久久久久久 | 日韩美女主播视频| 国产夫妻性生活视频| 91美女片黄在线观看91美女| 大桥未久一区二区三区| 唐人社导航福利精品| 日韩女优av电影在线观看| 黄色aaa视频| 国产精品va| 国产日本欧美一区二区三区在线 | 中文字幕国产精品久久| 久久午夜无码鲁丝片午夜精品| 日韩专区中文字幕一区二区| 高清视频一区| 成年人黄视频在线观看| 欧美午夜免费电影| 国产性生活毛片| 欧美福利专区| 国产深夜精品福利| 黄色影院在线播放| 香蕉成人伊视频在线观看| 亚洲免费成人在线视频| 日韩精品欧美| 日韩免费黄色av| 天天综合在线视频| 亚洲一区国产视频| 亚洲三级在线视频| 国产精品国产一区| 国产精品久久久久久久久久久久| 亚洲欧洲国产综合| 亚洲国产综合视频在线观看| 亚洲av无一区二区三区久久| 国产精品精品国产一区二区| 国产成人鲁鲁免费视频a| 香蕉视频911| 午夜精品久久久久久久久| 精品国产aⅴ一区二区三区东京热| 日韩黄色大片| 国产精品免费一区豆花| 男同在线观看| 日本韩国欧美一区| 久久精品—区二区三区舞蹈 | 欧美亚洲日本网站| 少妇人妻精品一区二区三区| 亚洲一区二区影院| 国产艳妇疯狂做爰视频| 国产一区久久| 国产高清精品一区二区三区| 牛牛在线精品视频| 欧美r级在线观看| 国产一级一片免费播放| 成人国产精品免费| 91视频 -- 69xx| 蜜桃国内精品久久久久软件9| 91成人免费观看网站| 视频在线观看你懂的| 色婷婷综合久色| 性爱在线免费视频| 精品亚洲国产成人av制服丝袜 | 亚洲精品一二| 久久亚洲综合网| 日韩一区二区三区在线免费观看| 中文字幕精品一区久久久久| 91免费视频播放| 亚洲美女区一区| 亚洲精品乱码久久久久久蜜桃欧美| 激情久久一区| 免费看成人午夜电影| 欧美大片1688网站| 久久久999国产精品| 成人毛片在线免费观看| 色综合久久88色综合天天| 91香蕉国产视频| 国产精品99久久久久久似苏梦涵| 国产3p露脸普通话对白| 在线看成人短视频| 国产欧美中文字幕| av资源在线看片| 亚洲最新中文字幕| 精品区在线观看| 欧美午夜精品久久久久久久| 一本在线免费视频| 丰满少妇久久久久久久| 欧洲av无码放荡人妇网站| 欧洲杯什么时候开赛| 亚洲一区二区三区久久| 日韩大片免费观看| 久久九九亚洲综合| 色视频在线观看福利| 欧美人伦禁忌dvd放荡欲情| 久久精品国产亚洲AV无码男同| 26uuu亚洲综合色欧美 | 日本熟女毛茸茸| 亚洲视频中文字幕| 丝袜美腿中文字幕| 国产精品影音先锋| 精品久久久久久久无码| 欧美视频在线观看| 亚洲蜜桃av| 欧美日韩看看2015永久免费 | 四虎5151久久欧美毛片| 成人性生交大片免费看视频直播| 1区2区3区在线| 日韩视频在线免费| 黄色小视频在线免费观看| 欧美mv和日韩mv的网站| 中文字幕在线观看免费| 午夜影院在线观看欧美| 日韩在线中文字幕视频| 欧美国产激情二区三区| 欧美xxxxx精品| 国产成人免费视频一区| 91亚洲精品久久久蜜桃借种| 久久精品电影| 99在线精品免费视频| 影音先锋成人在线电影| 日韩女优中文字幕| 亚洲国产国产| 国产偷国产偷亚洲高清97cao| 91成人app| 国产精品视频区1| 天天免费亚洲黑人免费| 26uuu日韩精品一区二区| 永久免费网站在线| 久久成人18免费网站| 在线看黄色av| 一本色道久久综合狠狠躁篇怎么玩 | 天堂√8在线中文| 欧美精品激情在线| 中文字幕中文字幕在线十八区| 在线视频欧美日韩精品| 国内在线精品| 亚洲欧美日韩国产中文专区| www.日日夜夜| 精品美女一区二区三区| 国产成人av免费看| 欧美一区二区三区在线电影| 一区二区三区播放| 欧美三级资源在线| 中国女人一级一次看片| 欧美亚洲一区三区| 最新在线中文字幕| 欧美曰成人黄网| 中文字幕+乱码+中文字幕明步| 色婷婷精品大视频在线蜜桃视频| 日本一区二区三区精品| 欧美性黄网官网| 永久免费无码av网站在线观看| 都市激情亚洲色图| 日韩精品一区二区亚洲av| 日本韩国欧美在线| 欧美成人一区二区视频| 欧美老人xxxx18| 国产黄色美女视频| 亚洲国产精品久久精品怡红院| 韩国av免费在线| 日韩av网址在线观看| 精品欧美不卡一区二区在线观看 | 精品一区在线看| 五月天国产视频| 成人三级伦理片| 18禁裸乳无遮挡啪啪无码免费| 国产拍揄自揄精品视频麻豆| 亚洲精品自拍视频在线观看| 亚洲人成精品久久久久久| 久久久美女视频| 好吊成人免视频| 中文字幕视频免费观看| 欧美一级欧美三级在线观看| 风流老熟女一区二区三区| 亚洲精品永久免费| 91在线品视觉盛宴免费| 欧美巨大黑人极品精男| 麻豆mv在线看| 国产精品偷伦免费视频观看的| 99久久99九九99九九九| 国产伦精品一区二区三区在线| 亚洲欧洲免费| mm131午夜| 国产亚洲精品bv在线观看| 国产精品v日韩精品v在线观看| 国产精品主播直播| 一区二区三区四区免费| 日韩理论片在线| 天天操天天干视频| 欧美日韩一区二区三区在线看| www日本视频| 亚洲天堂免费视频| 午夜av在线播放| 日本中文字幕久久看| **日韩最新| 欧美精品国产精品久久久 | 国产视频手机在线播放| 国产精品1区二区.| 干b视频在线观看| 亚洲国产精品久久人人爱蜜臀| 91丨九色丨海角社区| 精品毛片乱码1区2区3区| 1024免费在线视频| …久久精品99久久香蕉国产| 99视频这里有精品| 欧美亚洲一级二级| 好吊日精品视频| 久久黄色片网站| 久久久久国产精品免费免费搜索| 久久黄色免费网站| 欧美日韩国产大片| 你懂的视频在线观看| 欧美极品美女电影一区| 国产精品亚洲成在人线| 鲁片一区二区三区| 你懂的网址国产 欧美| 91极品视频在线观看| 97久久久精品综合88久久| 成人观看免费视频| 欧美日韩一区二区三区在线| 亚洲av电影一区| 久久91亚洲精品中文字幕奶水| 丁香久久综合| 日韩欧美视频一区二区| 亚洲一区二区网站| 影音先锋人妻啪啪av资源网站| 一区二区三区在线视频观看58 | 日韩免费电影| 久久精品国产精品国产精品污| 午夜久久一区| 亚洲第一区第二区第三区| 国产女同性恋一区二区| 日日骚av一区二区| 亚洲摸下面视频| 日韩激情电影| 麻豆亚洲一区| 久久国产精品久久久久久电车| 免费黄色三级网站| 亚洲国产wwwccc36天堂| 丰满人妻av一区二区三区| 免费99精品国产自在在线| 91精品福利观看| 一区二区三区四区久久| 精品综合久久久久久8888| 18精品爽国产三级网站| 欧美日韩亚洲综合一区| 视频免费一区| 91欧美视频网站| 五月天综合网站| 日本一区二区三区在线免费观看| 一区二区中文字幕在线| 99热这里只有精品5| 欧美激情啊啊啊| 99久久人爽人人添人人澡| 久久人人爽人人爽人人av| 成人精品免费看| 在线观看国产亚洲| 亚洲视频日韩精品| 中文.日本.精品| 一区二区三区一级片| 国产精品一色哟哟哟| 久久久99精品| 日韩精品日韩在线观看| 桃花岛tv亚洲品质| 欧美日韩在线免费观看视频| 国产乱码精品一区二区三区忘忧草| 青娱乐国产精品| 亚洲国产成人av在线| 国模冰冰炮一区二区| 亚洲一区二区三区免费看| 狠狠色丁香久久婷婷综合丁香| 加勒比av在线播放| 日韩成人中文字幕| a∨色狠狠一区二区三区| 国产成人精品免费看在线播放| 国产盗摄女厕一区二区三区 | 欧美日韩国产综合一区二区三区| 九七久久人人| 精品国产中文字幕| 免费成人在线观看| 欧美精品videos极品| 亚洲男人天堂手机在线| 日日狠狠久久| 毛片在线播放视频| 中文文精品字幕一区二区| aaa一区二区| 91产国在线观看动作片喷水| 欧美肉体xxxx裸体137大胆| 亚洲理论中文字幕| 欧美日韩免费在线观看| 在线观看精品一区二区三区| www日韩av| 免费观看日韩av| 日本三级2019| www国产亚洲精品久久网站| 欧美色图婷婷| 精品亚洲视频在线| 欧美丝袜美女中出在线| av在线free| 欧美婷婷久久| 成人午夜伦理影院| 一道本无吗一区| 日本中文字幕成人| 亚洲无毛电影|