Cocos2dx: Падающий физический мяч проходит через сцену - PullRequest
0 голосов
/ 12 марта 2020

Если я перемещаю сцену, то мяч проходит через сцену ... если сцена не перемещается, тогда мяч никогда не проходит через сцену. Как настроить мяч, чтобы он не проходил?

Вот код:

ball->addComponent(PhysicsBody::createCircle(ball->getContentSize().width*0.5f, PhysicsMaterial(10.0f,0.1,0.1)));
ball->getPhysicsBody()->setGravityEnable(true);
ball->getPhysicsBody()->setRotationEnable(false);
ball->getPhysicsBody()->setDynamic(true);
ball->getPhysicsBody()->setTag(BALL_BODYS_TAG);
ball->getPhysicsBody()->setCategoryBitmask(0x01);
ball->getPhysicsBody()->setCollisionBitmask(0x02);
ball->getPhysicsBody()->setMass(10);

этап:

stage->addComponent(PhysicsBody::createBox(stage->getContentSize(), PhysicsMaterial(100.0f,0.1,0.1)));
stage->getPhysicsBody()->setGravityEnable(false);
stage->getPhysicsBody()->setTag(STEPS_BODYS_TAG);
stage->getPhysicsBody()->setMass(100);
stage->getPhysicsBody()->setDynamic(true);

код перемещения сцены:

void GBStage::updateStage(float dt)
{
    Vec2 pos = this->getPosition();

    pos.y += sBridge->gameSpeed;

    this->setPosition(pos); //Updating just sprite position

}

Теперь сцена движется вверх, падение мяча вниз. Но мяч проходит через сцену. Как остановиться на сцене. Что не так с моим кодом?

enter image description here

1 Ответ

0 голосов
/ 16 марта 2020

Найдено временное решение . Теперь я прекратил перемещение спрайтов в позиции спрайта. Я использовал setVelocity для перемещения этапов. Теперь мяч никогда не проходит шаги.

this->getPhysicsBody()->setVelocity(sBridge->steps_Velocity);

Но в Cocos2d-Obj C с Box2D у нас были опции, чтобы переместить позицию спрайта и установить позицию спрайта в физическое тело. Теперь в Cocos2d-x мы не можем переместить спрайт и установить его положение в тело. Если кто-нибудь знает, можно ли установить положение спрайта для физического тела и при этом достичь движения с помощью спрайта, тогда, пожалуйста, ответьте.

...