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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

cocos2dx 坐标系统详解

發布時間:2025/3/21 windows 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 cocos2dx 坐标系统详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1、在cocos2dx中,支持以下坐標系:

●?屏幕坐標系: 原點在左上角,X軸向右,Y軸向下。(比如處理觸摸事件時CCTouch對象中的坐標就是屏幕坐標系)

●?OpenGL坐標系:?原點在左下角,X軸向右,Y軸向上。(比如CCNode類的setPosition函數調用就是此坐標系)

●?世界坐標系:指相對于整個屏幕的坐標系,(0,0)就是屏幕的左下角

●?本地坐標系:相對于父對象的坐標。


2、錨點(AnchorPoint)


●?一句話來描述就是:錨點我們可以看成用一根圖釘將一張紙或者相片釘在墻上的那個點。


●?錨點的x和y取值范圍在[0,1]之間。


●?精靈(Sprite)的錨點默認為(0.5,0.5),默認是不忽略錨點的,所以

virtual bool isIgnoreAnchorPointForPosition();//默認返回false

●??其他節點比如說CCLayer和CCSense,錨點默認為(0,0),默認是忽略錨點

virtual bool isIgnoreAnchorPointForPosition();//默認返回true


所以,如果要在CCLayer和CCSense中設置錨點,要如下設置

CCLayer* layer1 = CCLayerColor::create(ccc4(255,0,0,255), 300, 200); addChild(layer1);layer1->ignoreAnchorPointForPosition(false);//設置不忽略錨點,此時錨點會變為默認的(0.5,0.5)layer1->setAnchorPoint(ccp(0,0));//然后再這里設置自定義錨點





3 坐標轉換,詳細解釋如下,應該已經說得很明白了。


CCSprite *sprite1=CCSprite::create("CloseNormal.png");CCLOG("sprite1=(%f,%f)",sprite1->getContentSize().width,sprite1->getContentSize().height);sprite1->setAnchorPoint(ccp(1,1));sprite1->setPosition(ccp(20,40));CCSprite *sprite2=CCSprite::create("CloseNormal.png");sprite2->setPosition(ccp(-5,-20));sprite2->setAnchorPoint(ccp(1,1));CCPoint point1=sprite1->convertToNodeSpace(sprite2->getPosition());//以sprite1左下角為參考點(0,0)定位sprite2錨點的坐標,并返回CCPoint point2=sprite1->convertToWorldSpace(sprite2->getPosition());//以sprite1左下角為參考點(0,0),定位(-5,20)這個點為sprite2錨點坐標,并返回CCPoint point3=sprite1->convertToNodeSpaceAR(sprite2->getPosition());//以sprite1的錨點為參考點(0,0),定位sprite2錨點的位置,并返回CCPoint point4=sprite1->convertToWorldSpaceAR(sprite2->getPosition());//以sprite1的錨點為參考點(0,0),定位定位(-5,20)這個點為sprite2錨點坐標,并返回CCLOG("point1=(%f,%f)",point1.x,point1.y);CCLOG("point2=(%f,%f)",point2.x,point2.y);CCLOG("point3=(%f,%f)",point3.x,point3.y);CCLOG("point4=(%f,%f)",point4.x,point4.y);


輸出結果如下:

sprite1=(40.000000,40.000000) ? ?(圖片大小)
point1=(15.000000,-20.000000)
point2=(-25.000000,-20.000000)
point3=(-25.000000,-60.000000)
point4=(15.000000,20.000000)




轉載于:https://www.cnblogs.com/fzll/p/3954613.html

總結

以上是生活随笔為你收集整理的cocos2dx 坐标系统详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。