Merge pull request #5325 from boyu0/iss3988_physics_setRotation_bug

closed #3988: fix bug Node::setRotation() moves opposite when node has a physics body.
This commit is contained in:
James Chen 2014-02-12 17:00:31 +08:00
commit 8ede1607a2
3 changed files with 40 additions and 1 deletions

View File

@ -345,7 +345,7 @@ void PhysicsBody::setPosition(Point position)
void PhysicsBody::setRotation(float rotation)
{
cpBodySetAngle(_info->getBody(), PhysicsHelper::float2cpfloat(rotation * M_PI / 180.0f));
cpBodySetAngle(_info->getBody(), -PhysicsHelper::float2cpfloat(rotation * M_PI / 180.0f));
}
Point PhysicsBody::getPosition() const

View File

@ -16,6 +16,7 @@ namespace
CL(PhysicsDemoPump),
CL(PhysicsDemoOneWayPlatform),
CL(PhysicsDemoSlice),
CL(PhysicsDemoBug3988),
#else
CL(PhysicsDemoDisabled),
#endif
@ -1219,4 +1220,31 @@ std::string PhysicsDemoSlice::subtitle() const
return "click and drag to slice up the block";
}
void PhysicsDemoBug3988::onEnter()
{
PhysicsDemo::onEnter();
_scene->toggleDebug();
_scene->getPhysicsWorld()->setGravity(Vect::ZERO);
auto ball = Sprite::create("Images/YellowSquare.png");
ball->setPosition(VisibleRect::center() - Point(100, 0));
ball->setRotation(30.0f);
this->addChild(ball);
auto physicsBall = makeBox(VisibleRect::center() + Point(100, 0), Size(100, 100));
physicsBall->setRotation(30.0f);
this->addChild(physicsBall);
}
std::string PhysicsDemoBug3988::title() const
{
return "Bug3988";
}
std::string PhysicsDemoBug3988::subtitle() const
{
return "All the Rectangles should have same rotation angle";
}
#endif // ifndef CC_USE_PHYSICS

View File

@ -184,5 +184,16 @@ private:
int _sliceTag;
};
class PhysicsDemoBug3988 : public PhysicsDemo
{
public:
CREATE_FUNC(PhysicsDemoBug3988);
void onEnter() override;
virtual std::string title() const override;
virtual std::string subtitle() const override;
};
#endif
#endif