Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 围绕另一个对象旋转的对象不断加速_C++_Rotation_Sfml - Fatal编程技术网

C++ 围绕另一个对象旋转的对象不断加速

C++ 围绕另一个对象旋转的对象不断加速,c++,rotation,sfml,C++,Rotation,Sfml,好的,我对编程还是新手,我一直在尝试处理场景图,每当我旋转一个对象时,它的子对象都会围绕它加速,而我只想让它们以与父对象(父对象)旋转相同的速度围绕父对象旋转 这就是它们旋转的原因 if (sf::Keyboard::isKeyPressed(sf::Keyboard::Q) == true) { if (Entity != nullptr) { Entity->theSprite.rotate(-10); if (Entity->isParent =

好的,我对编程还是新手,我一直在尝试处理场景图,每当我旋转一个对象时,它的子对象都会围绕它加速,而我只想让它们以与父对象(父对象)旋转相同的速度围绕父对象旋转

这就是它们旋转的原因

if (sf::Keyboard::isKeyPressed(sf::Keyboard::Q) == true)
{
    if (Entity != nullptr)
    {
    Entity->theSprite.rotate(-10);
    if (Entity->isParent == true)
        {
        for (int i = 0; i < Entity->listofChildren.size(); i++)
            {
            Entity->listofChildren.at(i)->theSprite.rotate(-10);
            Entity->listofChildren.at(i)->theSprite.setPosition(rotateAround(Entity, Entity->listofChildren.at(i)));
            }
        }
    }
}

我一直在试图弄清楚为什么会发生这种情况,我的猜测是,它只是不断累积每一帧,但我不知道如何使其停止:(

问题是,您首先在

Entity->theSprite.rotate(-10);
然后稍后使用父对象的旋转来确定子对象的旋转角度

float angle = toRotateAround->theSprite.getRotation() * (_PI / 180);
让我们看一下程序计算的内容:

  • 迭代:ParentAngle=-10->子对象的旋转加上-10->-10
  • 迭代:ParentAngle=-20->子对象的旋转加上-20->-30
  • 迭代:ParentAngle=-30->子对象的旋转加上-30->-60
  • 不应使用父精灵的当前角度作为参考,而应将旋转值直接传递到函数
    rotateAround

    float angle = toRotateAround->theSprite.getRotation() * (_PI / 180);