用鼠标射击子弹

时间:2016-08-04 19:02:16

标签: c++ sdl sdl-2

    double bullet::distance(int x1, int y1, int x2, int y2)
{
    return sqrt( pow( x2 - x1, 2 ) + pow( y2 - y1, 2 ) );
}

距离函数^

speedX.push_back((x - targetx) / distance(x, y, targetx, targety)*7);//x player pos, targetx mouse pos
speedY.push_back((y - targety) / distance(x, y, targetx, targety)*7);

计算每8ms ^有多少像素变化

sbullet[i].setX(sbullet[i].getX() - (int)round(speedX[i]));
sbullet[i].setY(sbullet[i].getY() - (int)round(speedY[i]));

实际移动^

所以这是我的子弹用鼠标,但它并没有完全适用于鼠标。

如何让它更加准确?

1 个答案:

答案 0 :(得分:1)

一旦你到达鼠标,你需要放慢速度。在您的代码中,您始终在目标方向上移动7个像素。如果距离小于7像素,则会超调。

你可以添加一个声明,如果距离小于7,只需将新位置设置为目标。