Cocos2dx:如何实现精灵的坐标转换,ConvertToNodeSpace、ConvertToWorldSpace两个函数的使用及注意事项
设备/引擎:Mac(11.6)/cocos
开发工具:Xcode(13.0)
开发需求:根据项目需求来转换精灵的坐标
【这是一个拉票置顶>~<】
开始正文之前先给自己的2022做个总结,顺便也拉个票~
下一个365天,要继续充满热爱~
2022即将结束,这一年来自己已经记不清自己的创作历程,看到年度创作报告的时候,才发现自己做了这么多了,才发觉创作分享已成了自己的一个习惯。回想起来自己从开始的简单创作分享,到现在的分享日常,更多的是对所做的事情的热爱,我也将会将这份热爱坚持下去……也希望能帮助到每一位看到的同学,祝各位同学年富一年~~~
最后也希望大家点这里投出宝贵的一票,您的每一分都是对我的支持与鼓励
开始正文
1.什么时候需要对精灵坐标进行转换
一般当两个精灵不属于同一父类的时候,而两个精灵间又有交互作用,这时可能就需要考虑坐标转换了,例如你在项目中需要将A精灵放到B精灵上,而两个精灵又不属于一个父类,这时就需要将A的坐标转换到B所在的坐标系上……
2.ConvertToNodeSpace、ConvertToWorldSpace
1.两个函数都是以参照物的左下角为坐标原点,向右向上创建坐标系;
2.ConvertToNodeSpace:所获得的坐标是相对于参照物的坐标;
3.ConvertToWorldSpace:所获得的坐标是相对于参照物所在的坐标系中的坐标;
4.两个函数还各有一个AR版本ConvertToNodeSpaceAR、ConvertToWorldSpaceAR:唯一的区别就是原点为精灵节点的锚点而不是所在的坐标系原点;
注:关键点就是找准坐标系的原点位置,到底是相对于世界坐标系的原点(一般为屏幕左下角),还是精灵节点坐标系的原点(一般为精灵节点的左下角)。
3.运用
写法比较简单如下:
CCPoint pos = spr->convertToNodeSpace(pos);
pos为你操作的精灵A的坐标位置,spr是你要转换到的精灵B的父类(也就是B的坐标系)
CCPoint _sprPosInWorld = this->convertToWorldSpace(_itemSpr->getPosition());
这个比较好理解,将精灵_itemSpr的坐标转换到世界坐标系中
整体来说这两个函数并不难理解,重点是根据自身项目需求来找到更合适进行使用!
希望能给大家带来帮助!!!有什么问题需要讨论的可以评论私信欢迎讨论~