精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

亚洲色图 激情小说| 手机看片福利永久国产日韩| 国产精品天天干| 欧美7777| 日本一区二区三区在线不卡| 国产精品免费在线免费| 中文字幕日韩三级片| 色在线免费观看| 国产亚洲成年网址在线观看| 日本免费一区二区三区视频观看| 无码少妇精品一区二区免费动态| 青青在线精品| 一级做a爱片久久| 九九99久久| 久草手机在线视频| 久久人人99| 欧美成人一区二区三区片免费| 免费人成在线观看视频播放| 天堂在线中文资源| 日韩黄色免费网站| 日韩在线高清视频| 先锋资源av在线| 日韩毛片在线| 亚洲香肠在线观看| 日韩福利一区二区三区| www黄色网址| 久久精品91| 亚洲人成免费电影| 久久精品久久99| 日本理论片午伦夜理片在线观看| 成人免费观看男女羞羞视频| 欧美极品少妇xxxxⅹ免费视频| 中文字幕一区二区三区人妻| 国产精品一区二区美女视频免费看 | 羞羞色国产精品网站| 色综合久久久久久久久| 亚洲不卡中文字幕| 超碰福利在线观看| 男女男精品视频| 91国产中文字幕| 影音先锋男人看片资源| 免费av一区二区三区四区| 欧美一级欧美一级在线播放| 99视频免费播放| 久久香蕉av| 亚洲欧美综合网| 麻豆久久久9性大片| 丰满人妻一区二区三区四区53| 在线视频亚洲| 欧美国产日韩视频| 男人的午夜天堂| 精品欧美激情在线观看| 精品日韩99亚洲| 思思久久精品视频| 欧美123区| 色久综合一二码| 男人天堂999| av在线私库| 一区二区三区高清在线| 欧美日韩天天操 | 欧美日韩午夜在线视频| 国产免费黄色av| 中文在线字幕免费观看| 国产亚洲制服色| 99精品在线直播| www天堂在线| 国产91在线看| 成人高清在线观看| 精品人妻aV中文字幕乱码色欲| 久久久水蜜桃av免费网站| 欧美精品做受xxx性少妇| 黑人操日本美女| 亚洲成av人片乱码色午夜| 日韩中文字幕网站| 精品无码一区二区三区蜜臀| 欧美人妖在线| 亚洲高清色综合| 超碰男人的天堂| 影视先锋久久| 中文字幕亚洲欧美日韩2019| 性欧美精品男男| 精品九九在线| 亚洲情综合五月天| 香蕉成人在线视频| 亚洲精品99| 欧美精品18videosex性欧美| 日韩精品视频免费播放| 国产真实久久| 欧美一级免费看| 成人免费看片98欧美| 性高湖久久久久久久久| 日韩美女写真福利在线观看| 中文字幕福利视频| 久久99精品久久久久久动态图 | 久久蜜臀中文字幕| 日韩中文字幕一区二区| 日本韩国在线视频爽| 亚洲精品欧美综合四区| 国产中文字幕乱人伦在线观看| 91在线导航| 中文字幕亚洲区| 在线观看av的网址| 午夜影院一区| 欧美嫩在线观看| 久久发布国产伦子伦精品| 欧美一级一片| 三级精品视频久久久久| 欧美 日韩 国产 一区二区三区| 98精品久久久久久久| 久久99精品国产99久久6尤物| 日韩精品视频免费看| 丝袜美腿亚洲一区二区图片| 成人羞羞国产免费| 六月丁香综合网| 久久这里都是精品| 中国一级黄色录像| 伊人成综合网站| 51精品视频一区二区三区| 欧美双性人妖o0| 欧美电影三区| 欧美亚洲在线观看| 日本三级一区二区三区| 韩国毛片一区二区三区| 99re在线观看| 天堂在线视频观看| 欧美激情一区三区| 黄色三级中文字幕| 久色国产在线| 欧美日韩国产丝袜美女| 久久久久久久久久一区二区| 美腿丝袜亚洲图片| 不用播放器成人网| 国产精品国产精品国产| 国产激情一区二区三区四区| 欧美激情第一页在线观看| 超碰电影在线播放| 狠狠做深爱婷婷久久综合一区| 99久久99精品| 欧美日韩一二| 青草青草久热精品视频在线网站| 精品国产乱码一区二区三 | 国产1区2区3区精品美女| 少妇免费毛片久久久久久久久| 激情网站在线| 日韩一区二区电影在线| 短视频在线观看| 中出一区二区| 国产在线999| 日色在线视频| 亚洲第一搞黄网站| 一女二男3p波多野结衣| 一区二区三区视频免费观看| 海角国产乱辈乱精品视频| 亚洲性生活大片| 国产欧美日韩久久| 亚洲少妇第一页| 欧洲亚洲视频| 91国产美女在线观看| 国产又色又爽又黄又免费| 久久久99精品久久| 成年人视频网站免费观看| 青青视频一区二区| 欧美巨乳在线观看| av一区二区三| 亚洲美女区一区| 极品粉嫩美女露脸啪啪| 欧美国产美女| 成人中文字幕在线观看| av大全在线免费看| 在线观看91av| 永久久久久久久| 国产真实乱对白精彩久久| 日韩欧美亚洲精品| 成人涩涩视频| 久久精品电影网| 99re只有精品| 一区二区三区免费在线观看| 成人亚洲免费视频| 亚洲精品2区| 国语自产偷拍精品视频偷 | 久久婷婷影院| 视频在线99| 欧美最新精品| 这里只有视频精品| japanese国产| 一区二区三区在线影院| 美女被艹视频网站| 91亚洲国产成人久久精品| 国产精品黄页免费高清在线观看| 亚洲第一视频在线| 亚洲成人自拍一区| 天堂久久久久久| 激情综合网址| 国产九区一区在线| 成人小电影网站| 久久精品国产综合| av一级黄色片| 日韩欧美在线免费| 91动漫免费网站| 国产一区中文字幕| 日韩国产成人无码av毛片| 首页亚洲中字| 国产中文字幕亚洲| 四虎影院观看视频在线观看| 亚洲精品美女免费| 波多野结衣激情视频| 亚洲欧美欧美一区二区三区| 午夜福利三级理论电影| 三级成人在线视频| 伊人再见免费在线观看高清版| 欧美五码在线| 久久久精品人妻一区二区三区| 欧美日韩亚洲一区| 久久综合一区二区三区| 青草综合视频| 欧美一级大胆视频| 男人天堂久久久| 日韩国产中文字幕| 136福利视频导航| 欧美日韩国产一区中文午夜| 2014亚洲天堂| 成人午夜又粗又硬又大| 天天操天天爽天天射| 激情自拍一区| 久久免费视频2| 伊人久久大香线蕉av不卡| 国产成人福利网站| 色yeye免费人成网站在线观看| 亚洲人成在线观| 亚洲影院一区二区三区| 午夜精品视频在线观看| 美国美女黄色片| 91片黄在线观看| 美女露出粉嫩尿囗让男人桶| 日一区二区三区| 国产一二三在线视频| 国产日产一区| 国产伦精品一区二区三区视频免费 | 欧美另类视频| 亚洲欧美综合一区| 欧美女王vk| 精品一区久久久| 超碰成人免费| 91久久精品www人人做人人爽 | 久久69成人| 国产91免费观看| 国产在线美女| 欧美劲爆第一页| 无码视频一区二区三区| 精品高清美女精品国产区| 懂色av懂色av粉嫩av| 国产精品激情偷乱一区二区∴| 婷婷五月精品中文字幕| 国产精品911| 黄色片免费网址| 久久99精品国产.久久久久久| caoporn超碰97| 日韩有码一区二区三区| 黄色网页免费在线观看| 亚洲激情女人| 和岳每晚弄的高潮嗷嗷叫视频 | 亚洲精品永久www嫩草| 免费av一区二区三区四区| 欧美极品视频一区二区三区| 日本亚洲不卡| 久久久神马电影| 网友自拍区视频精品| 欧美日韩一区二区视频在线| 嫩草一区二区三区| 久久久久无码国产精品一区| 精品中文字幕一区二区三区av| 欧美性大战久久久久| 国产精品一区高清| 国产伦精品一区二区三毛| 久久69av| 成人女人免费毛片| 国产一区二区三区免费在线 | 日本片在线观看| 欧美国产日本高清在线 | 黄色美女视频在线观看| 久久精品91久久久久久再现| 日韩精品毛片| 欧美不卡视频一区发布| 欧美xxx黑人xxx水蜜桃| 国语自产精品视频在免费| 妞干网免费在线视频| 日韩av三级在线观看| 78精品国产综合久久香蕉| 日本高清视频一区| 成人福利一区二区| 亚洲在线视频福利| 无码日韩精品一区二区免费| 日韩av电影免费播放| 91精品一区国产高清在线gif| 国内自拍中文字幕| 小嫩嫩精品导航| 欧洲美女亚洲激情| a级精品国产片在线观看| 国产毛片欧美毛片久久久| 中文字幕日韩欧美一区二区三区| 国产在线观看成人| 91高清在线观看| 国产夫绿帽单男3p精品视频| 亚洲精品久久7777777| 国产精品一区在线看| 中文字幕无线精品亚洲乱码一区 | 国产精品久线观看视频| 久热精品在线观看| 狠狠色噜噜狠狠狠狠97| 国产免费福利视频| 亚洲裸体xxxx| chinese偷拍一区二区三区| 欧美激情影音先锋| 久久久成人av毛片免费观看| 99热最新在线| 狠狠色狠狠色综合婷婷tag| 国产树林野战在线播放| 久久久久.com| 911福利视频| 久久亚洲精品国产精品紫薇| 欧美日韩国产精品一区二区三区| 色婷婷精品久久二区二区蜜臀av| 国产成年妇视频| 一区二区三区高清国产| heyzo高清在线| 国产精品美乳一区二区免费| 天堂日韩电影| 男人添女人下部视频免费| 麻豆精品在线视频| 无码h肉动漫在线观看| 亚洲影院久久精品| 91九色蝌蚪91por成人| 亚洲欧美制服丝袜| 啦啦啦中文在线观看日本| 国产成人一区二区三区| 亚洲国产精品嫩草影院久久av| www.激情网| 美女爽到高潮91| 摸摸摸bbb毛毛毛片| 午夜欧美2019年伦理| 国产成人精品a视频| 日韩一区在线视频| 姬川优奈av一区二区在线电影| 国产在线观看一区| 夜间精品视频| 亚洲va在线va天堂va偷拍| 亚洲国产精品成人久久综合一区| 青草视频在线观看免费| 日韩大陆毛片av| 国产资源在线观看入口av| 91久久精品一区二区别| 欧美性久久久| 特黄特色免费视频| 亚洲另类在线制服丝袜| 国产露脸91国语对白| 日韩亚洲国产中文字幕| 精品国产黄a∨片高清在线| 婷婷四月色综合| 天堂一区二区在线| 亚洲午夜精品久久久久久高潮| 91国产视频在线观看| 免费在线观看一级毛片| 欧美一级在线亚洲天堂| 欧美调教视频| 99999精品视频| 久久久久一区二区三区四区| 欧美三日本三级少妇99| 亚洲精品国产精品久久清纯直播| 国产精品vvv| 国产精品一区视频网站| 国产亚洲亚洲| 伊人网在线视频观看| 欧美日韩国产高清一区二区三区| 色大18成网站www在线观看| 91精品国产综合久久久久久久久 | 欧美久久一二区| 青草在线视频在线观看| 国产精品久久波多野结衣| 1024日韩| 亚洲理论片在线观看| 欧美日韩一区二区三区在线| 欧洲不卡av| 97超碰人人看人人 | 日韩国产网站| 亚洲天堂电影网| 国产成人自拍高清视频在线免费播放| avtt天堂在线| 亚洲精品狠狠操| 国产第一亚洲| 日b视频免费观看| 久久午夜羞羞影院免费观看| 一区二区三区在线免费观看视频| zzijzzij亚洲日本成熟少妇| 91精品啪在线观看国产爱臀| 内射国产内射夫妻免费频道| 国产色一区二区| 国产sm主人调教女m视频| 国产成人精品av在线| 自产国语精品视频| 素人fc2av清纯18岁|