我想要实现的是在2D环境中将一个精灵移动到另一个精灵。我从基本的Mx = Ax-Bx交易开始。但是我注意到,精灵越接近目标,它放慢的速度就越大。因此,我尝试根据速度创建一个百分比/比率,然后每个x和y都获得其速度允许的百分比,但是,它的行为非常奇怪,并且只有在Mx和My为正时才起作用
这是代码摘录:

ballX = ball->GetX();
    ballY = ball->GetY();
    targX = target->GetX();
    targY = target->GetY();
    ballVx = (targX - ballX);
    ballVy = (targY - ballY);
    percentComp = (100 / (ballVx + ballVy));
    ballVx = (ballVx * percentComp)/10000;
    ballVy = (ballVy * percentComp)/10000;


/ 10000用于减慢精灵运动

最佳答案

假设您希望精灵以恒定速度移动,则可以在X和Y位置都进行线性淡入淡出,如下所示:

#include <stdio.h>

int main(int, char **)
{
   float startX = 10.0f, startY = 20.0f;
   float endX = 35.0f, endY = -2.5f;
   int numSteps = 20;

   for (int i=0; i<numSteps; i++)
   {
      float percentDone = ((float)i)/(numSteps-1);
      float curX = (startX*(1.0f-percentDone)) + (endX*percentDone);
      float curY = (startY*(1.0f-percentDone)) + (endY*percentDone);

      printf("Step %i:  percentDone=%f curX=%f curY=%f\n", i, percentDone, curX, curY);
   }
   return 0;
}

10-06 14:31