我有一个带物理的场景初始化,我有一个带有物理体的角色精灵,然后我有一个带有物理体的静态地面精灵。这一切都很好,所以我的下一步是移动我的角色。现在我假设如果我刚刚更新了我的角色X位置,那么角色会移动并留在地上但是如果地面掉落,角色不会掉落它只是漂浮,我如何移动我的角色精灵并让它留在地上每时每刻?我的更新功能的代码在
下面void LevelOne::update(float delta)
{
if (mJoystick->isActive())
{
Vec2 scaledVelocity = mJoystick->getVelocity() * 240;
Vec2 updatedPosition = Vec2(mCharacter->getPosition().x + scaledVelocity.x
* delta, mCharacter->getPosition().y);
mCharacter->setPosition(updatedPosition);
if (mJoystick->getVelocity().x < 0)
{
mCharacter->setFlippedX(false);
}
else
{
mCharacter->setFlippedX(true);
}
}
答案 0 :(得分:0)
以下步骤可以解决您的问题 -
1)你是否将重力设置为像重力。设(0.0f,-10.0f),y应为负数。
2)设置Character Sprite是动态的。
3)代码应该是更新方法。
int32 velocityIterations = 1;
int32 positionIterations = 1;
world -> Step(dt, velocityIterations, positionIterations);
for (b2Body* b = world -> GetBodyList(); b; b = b -> GetNext()) {
if (b -> GetUserData() != NULL) {
CCSprite *myActor = (CCSprite*) b -> GetUserData();
if(myActor != NULL) {
myActor->setPositionY( b -> GetPosition().y * PTM_RATIO);
myActor->setRotation(-1 * CC_RADIANS_TO_DEGREES(b -> GetAngle()));
}
}
}