C# “如何制作一个对象”;飞";朝向鼠标XNA
我试图使对象在每次单击鼠标时滑向鼠标。它将不断地移动。现在,如果我在它前面(上面或下面)单击,它会沿着大致方向移动,但角度错误。当我在它后面点击的时候,它会慢很多,而且它最近的移动速度非常慢C# “如何制作一个对象”;飞";朝向鼠标XNA,c#,xna,trigonometry,game-physics,C#,Xna,Trigonometry,Game Physics,我试图使对象在每次单击鼠标时滑向鼠标。它将不断地移动。现在,如果我在它前面(上面或下面)单击,它会沿着大致方向移动,但角度错误。当我在它后面点击的时候,它会慢很多,而且它最近的移动速度非常慢 if (isdown()) //if the mouse is clicked { double paulx = Paullocation.X + radius; //midpoints of object double pauly = Paullocation.Y + radius;
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;
如果
Paullocation
是一个Vector2
,您只需计算它的位置和您用鼠标单击的坐标之间的差值,然后对其进行规格化,就可以得到要遵循的方向
Vector2 direction = new Vector2(mouse.X, mouse.Y) - Paullocation;
direction.Normalize();
Paullocation += direction * speed;
如果
Paullocation
是一个Vector2
,您只需计算它的位置和您用鼠标单击的坐标之间的差值,然后对其进行规格化,就可以得到要遵循的方向
Vector2 direction = new Vector2(mouse.X, mouse.Y) - Paullocation;
direction.Normalize();
Paullocation += direction * speed;
如果
Paullocation
是一个Vector2
,您只需计算它的位置和您用鼠标单击的坐标之间的差值,然后对其进行规格化,就可以得到要遵循的方向
Vector2 direction = new Vector2(mouse.X, mouse.Y) - Paullocation;
direction.Normalize();
Paullocation += direction * speed;
如果
Paullocation
是一个Vector2
,您只需计算它的位置和您用鼠标单击的坐标之间的差值,然后对其进行规格化,就可以得到要遵循的方向
Vector2 direction = new Vector2(mouse.X, mouse.Y) - Paullocation;
direction.Normalize();
Paullocation += direction * speed;
你为什么用cos/sin?在这种情况下,它们对我来说没有意义。我需要找到从鼠标创建的虚拟三角形的角度和对象的位置,以计算出要添加多少“x”和多少“y”。为什么要使用cos/sin?在这种情况下,它们对我来说没有意义。我需要找到从鼠标创建的虚拟三角形的角度和对象的位置,以计算出要添加多少“x”和多少“y”。为什么要使用cos/sin?在这种情况下,它们对我来说没有意义。我需要找到从鼠标创建的虚拟三角形的角度和对象的位置,以计算出要添加多少“x”和多少“y”。为什么要使用cos/sin?在这种情况下,它们对我来说没有意义。我需要找到从鼠标创建的虚拟三角形的角度和对象的位置,以计算出要添加多少“x”和多少“y”。Vector2的结构及其方法非常有用,你应该看看:)我如何更改它,以便一旦它碰到鼠标,它将以相同的角度反弹(如果它向东北方向30度,它会击中鼠标并向东南方向反弹30度)?只需将
方向
乘以-1
,但我认为您需要将该变量声明为类变量。向量2
结构及其方法非常有用,你应该看一看:)我该如何改变它,使它一旦击中鼠标,就会以相同的角度反弹(如果它向东北30度,它击中鼠标,然后向东南30度反弹)?只需将方向
乘以-1
,但是我认为您需要将该变量声明为类变量。Vector2
结构及其方法可能非常有用,您应该看看:)我将如何改变它,使它一旦碰到鼠标,就会以相同的角度反弹(如果它向东北30度,它会碰到鼠标,然后向东南30度反弹)?只需将方向
乘以-1
,但我认为您需要将该变量声明为类变量。Vector2
结构及其方法可能非常有用,您应该看一看:)我如何更改它,使它一旦碰到鼠标,就会以相同的角度反弹(如果它向东北方向30度,它会点击鼠标,然后向东南方向反弹30度)?只需将方向
乘以-1
,但我认为您需要将该变量声明为类变量。