cocos2dx 坐标转换相关函数应用演示

cocos2dx 坐标转换相关函数应用演示,第1张

概述坐标问题对于每一个初学者都是一个必须清晰的问题,但是一口气不能吃成胖子,面对这么函数怎么能一口气全部知道呢,毕竟初学(包括我),所以用现象说话,用实验论证,与其百度,不妨亲手一试,废话不多说上Demo,Code。 Size visableSize=Director::getInstance()->getVisibleSize();auto block= LayerColor::create(C

坐标问题对于每一个初学者都是一个必须清晰的问题,但是一口气不能吃成胖子,面对这么函数怎么能一口气全部知道呢,毕竟初学(包括我),所以用现象说话,用实验论证,与其百度,不妨亲手一试,废话不多说上Demo,Code。

Size visableSize=Director::getInstance()->getVisibleSize();auto block=	Layercolor::create(color4B(255,255),200,200);block->ignoreAnchorPointForposition(false);block->setposition(visableSize.wIDth/2,visableSize.height/2);this->addChild(block);auto Listenertouch=EventListenertouchOneByOne::create();Listenertouch->ontouchBegan=[=](touch* t,Event* e){	//Director::convertToUI				Vec2 VIEwPos= t->getLocationInVIEw();	Vec2 touchPos=t->getLocation();//内部用的就是convertToGL	Vec2 NodeSpacetoblock=block->convertToNodeSpace(touchPos);	Vec2 WorldspaceToblock=block->convertToWorldspace(touchPos);	std::string Info="";	Info+=	StringUtils::format("%20s:(%.0f,%.0f)\r\n","getLocationInVIEw",VIEwPos.x,VIEwPos.y);	Info+=	StringUtils::format("%20s:(%.0f,"getLocation",touchPos.x,touchPos.y);	Info+=	StringUtils::format("%20s:(%.0f,"convertToNodeSpace",NodeSpacetoblock.x,NodeSpacetoblock.y);	Info+=	StringUtils::format("%20s:(%.0f,"convertToWorldspace",WorldspaceToblock.x,WorldspaceToblock.y);	MessageBox(Info.c_str(),"test");	return true;};_eventdispatcher->addEventListenerWithSceneGraPHPriority(Listenertouch,this);

随便找一个空场景的Init里面加上此段,就可以用鼠标点击来看看,各种坐标到底转化成了什么。

最后总结:


注:以下位置都是以cocos2dx标准世界坐标系左下角0,0而说的

touch类中

getLocationInVIEw:等效于 点击位置-右上角位置

getLocation:等效于 点击位置-左下角位置

Node类中

convertToNodeSpace:等效于 点击位置-参照物(本Node)的左下角

convertToNodeSpaceAR:等效于 点击位置-参照物(本Node)的锚点位置

convertToWorldspace:等效于 点击位置+参照物(本Node)的左下角

convertToWorldspaceAR:等效于 点击位置+参照物(本Node)的锚点位置

补充:一个简单获得锚点位置的方法

static Vec2 GetWorldPoint(Node* node){  return node->getParent()->convertToWorldspaceAR(node->getposition());}

可以发现如果锚点为(0,0)

convertToNodeSpace等效于convertToNodeSpaceAR

convertToWorldspace等效于convertToWorldspaceAR

Director::类静态

注:UIKIT原点左上角,OpenGL原点左下角

convertToGL:把UIKIT坐标->OpenGL坐标

convertToUI:把OpenGL坐标->UIKIT坐标

TMXTiledMap坐标转换

以下是TMX地图坐标转换函数

//pos为OpenGL世界坐标static Vec2 ConvertToTMXMapPoint(Vec2 pos,TMXTiledMaP* map){	Vec2 location=map->convertToNodeSpace(pos);	Size MapSize=map->getMapSize();	Size TitleSize=map->getTileSize();	return Vec2(location.x/TitleSize.wIDth,MapSize.height-1- location.y/TitleSize.height);}
总结

以上是内存溢出为你收集整理的cocos2dx 坐标转换相关函数应用演示全部内容,希望文章能够帮你解决cocos2dx 坐标转换相关函数应用演示所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1056863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存