每次点击时,我都会尝试让对象滑向鼠标。它将不断移动。现在,如果我在它前面(上方或下方)点击,它会沿着大致方向移动,但方向是错误的。当我点击它后面时,它会慢下来很多,最接近它的速度非常慢。
if (isdown()) //if the mouse is clicked
{
double paulx = Paullocation.X + radius; //midpoints of object
double pauly = Paullocation.Y + radius;
double targetx = ms.X; //clicked location
double targety = ms.Y;
if (isdown(Keys.Space)) //if space is pressed
{
double hypotenuse = Math.Sqrt(Math.Pow(paulx - targetx, 2) + Math.Pow(pauly - targety, 2));
//finds hypotenuse^
double xcomponent = targetx - paulx; //finds both legs of triangle
double ycomponent = targety - pauly; //that is made by mouse
Paulincrement.X = (float)Math.Cos(xcomponent / hypotenuse); //main issue
Paulincrement.Y = (float)Math.Sin(ycomponent / hypotenuse); //main issue
}
}
Paullocation.X += Paulincrement.X;
Paullocation.Y += Paulincrement.Y;
答案 0 :(得分:3)
如果Paullocation
是Vector2
,您可以简单地计算其位置与您用鼠标点击的坐标之间的差异,然后对其进行标准化,您将获得遵循的方向。
Vector2 direction = new Vector2(mouse.X, mouse.Y) - Paullocation;
direction.Normalize();
Paullocation += direction * speed;