【问题标题】:Slow down sprite's movement减慢精灵的运动
【发布时间】:2013-12-16 20:38:25
【问题描述】:

在我的场景类中,我重写了更新函数,并按照here 的建议在 onEnter() 方法中调用了 scheduleUpdate()。所以在更新函数中我调用了我的图层类的更新,它应该更新我的精灵:

void View::update(float dt)
{
    world->Step(dt, 10, 10);
    for(b2Body *b = world->GetBodyList(); b; b=b->GetNext())
    {
        if(b->GetUserData() != NULL  && b->GetType() != b2_kinematicBody))
        {
            cocos2d::CCSprite *data = (cocos2d::CCSprite*)b->GetUserData();
            data->setPosition(ccp(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO));
            data->setRotation(-1 * CC_RADIANS_TO_DEGREES(b->GetAngle()));
        }
    }

}

目前,唯一的运动是由于重力而下落。然而,这个角色的动作实在是太快了。它几乎是瞬间撞到了地板上。有没有办法减慢这个速度? 当我将this tutorial 用于目标 c 时,球的下落速度要慢得多。

【问题讨论】:

  • 您是否在控制/限制每秒调用 update() 的次数?
  • @drescherjm 不,我不是

标签: c++ sprite cocos2d-x


【解决方案1】:

您是否正确设置了角色的质量?尝试减少它。另外我建议你使用一个小的wrapper,它可以让box2d 和cocos2d-x 的使用更加轻松。

【讨论】:

  • 密度为1.0。稍后我会看一下包装器。看起来很有希望。
  • 提供的更新代码没问题。可能您错误地设置了对象或对它们施加了一些力。
  • 发现问题。我将精灵的位置设置为屏幕的中心,但我将主体的位置设置为底部。所以在第一帧中,精灵立即出现在底部。
【解决方案2】:

发现问题。我将精灵的位置设置为屏幕的中心,但我将主体的位置设置为底部。所以在第一帧中,精灵立即出现在底部。

所以如果有人有同样的问题:检查你身体的位置。不仅仅是精灵的位置。

【讨论】:

    猜你喜欢
    • 2016-04-26
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    • 2011-06-16
    • 1970-01-01
    • 2020-04-23
    相关资源
    最近更新 更多