Cocos2d x 如何使用cpp在cocos2dx android中找到Sprite的中心点
我是cocos2dx android游戏开发的新手,我想知道如何在cocos2dx中获得sprite的中心点。我使用的是3.3版 让我解释一下这个问题,我有一个调度器,它每5秒调用一个函数。它将改变sprint的位置。现在在这个雪碧上面,我想在雪碧的正中央放另一个雪碧。我想知道如何在cocos2dx中找到运行sprint的中心点 任何帮助(感谢:)Cocos2d x 如何使用cpp在cocos2dx android中找到Sprite的中心点,cocos2d-x,cocos2d-x-3.0,cocos2d-android,Cocos2d X,Cocos2d X 3.0,Cocos2d Android,我是cocos2dx android游戏开发的新手,我想知道如何在cocos2dx中获得sprite的中心点。我使用的是3.3版 让我解释一下这个问题,我有一个调度器,它每5秒调用一个函数。它将改变sprint的位置。现在在这个雪碧上面,我想在雪碧的正中央放另一个雪碧。我想知道如何在cocos2dx中找到运行sprint的中心点 任何帮助(感谢:) 谢谢下面的代码将精灵的视觉中心置于一个点的中心 //your sprite Sprite * spr = Sprite::create(...);
谢谢下面的代码将精灵的视觉中心置于一个点的中心
//your sprite
Sprite * spr = Sprite::create(...);
//a point you want to center the sprite on
Point pointToCenterOn;
//sprite should have 0.5,0.5 pivot in order to have it's center in a specific coordinate
//this code will set sprite's position to the desired point
spr->setPosition(pointToCenterOn);
如果你想每帧都这样做-在更新中使用此代码,或者安排一个回调不断运行。如果我正确理解你的问题,那么你想放置sprite B是精灵a的孩子。 试试这样的
Sprite* parent = Sprite::create("MyTexture.png");
parent->setposition(Vec2(100,100));
this->addChild(parent,2);
Sprite* child = Sprite::create("MyTexture2.png");
child->setposition(Vec2(parent->getBoundingBox().size.width/2,parent->getBoundingBox().size.height/2));
parent->addChild(child,2);
这将使子对象正好位于父对象的中心,移动父对象将导致子对象也移动,void yourLayer::setBg(){
void yourLayer::setBg() {
bg1 = CCSprite::create("menu/menu_bg1.jpg");
bg1->setAnchorPoint(ccp(0, 0.5));
bg1->setPosition(ccp(0, visibleSize.height / 2 + origin.y));
lowerPart1 = CCSprite::create("menu/lower.jpg");
lowerPart1->setAnchorPoint(ccp(0.5,0.5));
lowerPart1->setPosition(ccp(bg1->getContentSize().width/2,bg1->getContentSize().height/2));
bg1->addChild(lowerPart1);
this->addChild(bg1, 0);
}
void yourLayer::scrollBk() {
bg1->setPosition(ccp(bg1->getPosition().x - 1, bg1->getPosition().y));
if (bg1->getPosition().x < -bg1->boundingBox().size.width) {
bg1->setPosition(
ccp(0, visibleSize.height / 2 + origin.y));
}
}
void yourLayer::update(float dt) {
scrollBk();
}
bg1=CCSprite::create(“menu/menubg1.jpg”);
bg1->setAnchorPoint(ccp(0,0.5));
bg1->设置位置(ccp(0,visibleSize.height/2+origin.y));
lowerPart1=CCSprite::create(“menu/lower.jpg”);
下第1部分->设定点(ccp(0.5,0.5));
lowerPart1->setPosition(ccp(bg1->getContentSize().width/2,bg1->getContentSize().height/2));
bg1->addChild(较低的第1部分);
此->添加子对象(bg1,0);
}
void yourLayer::scrollBk(){
bg1->setPosition(ccp(bg1->getPosition().x-1,bg1->getPosition().y));
如果(bg1->getPosition().x<-bg1->boundingBox().size.width){
bg1->设置位置(
ccp(0,可见尺寸.高度/2+原点.y));
}
}
作废图层::更新(浮动dt){
scrollBk();
}
它应该适合您……默认值为0.5,是的。我的意思是建议在枢轴不是默认值的情况下更改它:)Point centerPoint这是什么?我在cocos2dxI中使用cpp不理解centerPointSize size=moveSprite->getContentSize();sprite_TickingBombling->设置位置(点(大小.宽度*0.5,大小.高度*0.5));Is-child必须添加“parent->addChild(child,2);“我可以像这样添加Sprite*child->addChild(child,2);”;如果添加,则使用此->添加子对象(子对象,2);然后,这个子对象将被添加到添加父对象的同一层中,您必须分别移动子对象和父对象,这对于较大数量的对象来说有点混乱,如果您想这样做,那么您可以像child->setPosition(parent->getPosition)这样做;