精灵沿着一个角度走

时间:2016-05-19 17:56:02

标签: c++ c++11 sdl

我正在尝试让精灵走向另一个精灵,

movement_angle = (atan2((y - target->y),(x - target->x)));

if(isWalkable(game,delta))
{
    y -= ((int)(movementspeed)*delta)*sin(((movement_angle)));
    x -= ((int)(movementspeed)*delta)*cos(((movement_angle)));
}

我正在计算角度并将值添加到我的x和y绳索中。 但是运动并不完美,它并没有按照我的意愿实现,需要奇怪的转动等等。

2 个答案:

答案 0 :(得分:2)

很难确切地说出你的代码出了什么问题,但这里有一些你可以看到的东西:

  1. 要获得从某个点到target的向量,您需要通过点target->xx减去target->yy < / LI>
  2. 至少movement_angle需要是浮点数,但您可能希望doubles用于所有3D几何值
  3. 为什么要使用三角函数?您想直接从点xy走到target->xtarget->y,为什么不使用矢量,将其标准化,然后乘以movementspeeddelta

答案 1 :(得分:0)

你正在将一个代数结果输出到一个int。我认为这可能会导致你的问题。