所以我在cocos2d-x中编写了一个游戏,我需要其中一个精灵在一定时间内变宽,所以我尝试使用方法setScaleX()。问题是精灵的内容大小实际上没有变化,并且因为我的碰撞系统是基于精灵的内容大小,所以它们不能正常工作。这是我用于缩放的代码:
bar = Sprite::create( "Bar.png" );
CCLOG("Size: %f,%f.", bar->getContentSize().width, bar->getContentSize().height);
bar->setScaleX(1.5);
CCLOG("Size: %f,%f.", bar->getContentSize().width, bar->getContentSize().height);
两种情况下的输出完全相同。有没有办法解决这个问题?
答案 0 :(得分:2)
ContentSize
表示原始纹理大小,除非您使用setContentSize
方法设置它。
您可以使用比例因子乘以大小或使用boundingBox().size
来了解缩放精灵的当前大小(如果没有旋转或倾斜)。
答案 1 :(得分:1)
cocos2d::Size size1 = cocos2d::CCDirector::getInstance()->getWinSize();
scaleX=size1.width/768;
scaleY=size1.height/1024;
Sprite *sp1=Sprite::create("01.png");
sp1->setScaleX(scaleX);
sp1->setScaleY(scaleY);
this->addChild(sp1);
答案 2 :(得分:0)
Scale for Landscape:
cocos2d::Size size = cocos2d::CCDirector::getInstance()->getWinSize();
scaleX=size.width/1024;
scaleY=size.height/768;
Scale for Portrait:
cocos2d::Size size = cocos2d::CCDirector::getInstance()->getWinSize();
scaleX=size.width/768;
scaleY=size.height/1024;
Sprite *sp=Sprite::create("01.png");
sp->setScaleX(scaleX);
sp->setScaleY(scaleY);
this->addChild(sp);