Cocos2d x 如何使用cpp在cocos2dx android中找到Sprite的中心点

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(...);

我是cocos2dx android游戏开发的新手,我想知道如何在cocos2dx中获得sprite的中心点。我使用的是3.3版

让我解释一下这个问题,我有一个调度器,它每5秒调用一个函数。它将改变sprint的位置。现在在这个雪碧上面,我想在雪碧的正中央放另一个雪碧。我想知道如何在cocos2dx中找到运行sprint的中心点

任何帮助(感谢:)


谢谢

下面的代码将精灵的视觉中心置于一个点的中心

//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)这样做;