2017-03-10 4 views
0

Hier ist mein Code unten.Cocos2dx - Zero Restitution hört nicht auf zu prellen

Hinzufügen eines Sprites, der mit der Schwerkraft fällt;

SampleSprite* sp = SampleSprite::create(); 
sp->setPosition(screenWidth/ 2, screenHeight/2); 
this->layer->addChild(sp); 

sp->setContentSize(Size(unitW, unitH)); 
auto ps = cocos2d::PhysicsBody::createBox(sp->getContentSize(), cocos2d::PhysicsMaterial(1.f, 0.f, 1.f)); 
ps->setDynamic(true); 
ps->setRotationEnable(false); 
ps->setMoment(0); 
sp->addComponent(ps); 

Boden Hinzufügen, dass Sprite oben mit

cocos2d::Sprite* floor = cocos2d::Sprite::create("res/floor.png"); 
floor->setContentSize(cocos2d::Size(screenWidth - (2*padding), padding)); 
floor->setPosition(origin + cocos2d::Vec2(padding, 0)); 
floor->setAnchorPoint(cocos2d::Vec2(0,0)); 
auto physics = cocos2d::PhysicsBody::createEdgeBox(cocos2d::Size(screenWidth - (2*padding), padding), cocos2d::PhysicsMaterial(1.f, 0.f, 1.f)); 
physics->setDynamic(true); 
physics->setGravityEnable(false); 
floor->addComponent(physics); 

this->layer->addChild(floor); 

Screenshot of test game. Bouncing sprite on floor

Antwort

0
Here,I got the code to fix this :- 

define FLT_EPSILON 1.19209290e-07F 
float _filteredUpdateDelta; 

scene->getPhysicsWorld()->setAutoStep(false); 

void GameContrler::updatePhysics(float delta) 
{ 
const int phyiscsSubSteps = 3; 
float dt = delta/static_cast<float>(phyiscsSubSteps); 
_filteredUpdateDelta = dt > __FLT_EPSILON__ ? 0.15 * dt + 0.85 *           _filteredUpdateDelta : 0.0; 
for (int i=phyiscsSubSteps; i>0; i--) 
{ 
    sceneWorld->step(_filteredUpdateDelta); 
} 
kollidieren