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]));
实际移动^
所以这是我的子弹用鼠标,但它并没有完全适用于鼠标。
如何让它更加准确?
答案 0 :(得分:1)
一旦你到达鼠标,你需要放慢速度。在您的代码中,您始终在目标方向上移动7个像素。如果距离小于7像素,则会超调。
你可以添加一个声明,如果距离小于7,只需将新位置设置为目标。