C# 寻的导弹,它们是如何工作的?
我正在尝试创建的内容C# 寻的导弹,它们是如何工作的?,c#,geometry,xna,2d,game-physics,C#,Geometry,Xna,2d,Game Physics,我正在尝试创建的内容 将向玩家发射导弹的物体,如果与玩家碰撞,玩家死亡 问题 导弹如何向玩家移动 如何使导弹移动,使其不会立即直接朝玩家移动(缓慢地以一定角度移动) 我有一个公式,让鼠标成为“玩家”,让导弹朝它飞去 mouse = Mouse.GetState(); mousePosition = new Vector2(mouse.X, mouse.Y); A = (mouse.X - Position.X); B =
- 将向玩家发射导弹的物体,如果与玩家碰撞,玩家死亡李>
- 导弹如何向玩家移动
- 如何使导弹移动,使其不会立即直接朝玩家移动(缓慢地以一定角度移动)
mouse = Mouse.GetState();
mousePosition = new Vector2(mouse.X, mouse.Y);
A = (mouse.X - Position.X);
B = (mouse.Y - Position.Y);
C = (A * A) + (B * B);
C = (float)Math.Sqrt(C);
Angle1 = A / C;
Angle2 = B / C;
(画画是最好的!)
这只得到了从导弹到玩家的距离,现在我需要找到移动导弹的角度或东西,我需要做什么?你可以得到从一个点到另一个点的距离,并将其转化为一个方向
//Find the delta time
float delta = (float)gameTime.ElapsedGameTime.TotalSeconds * 60;
//Find the direction
Vector2 direction = mousePosition - misslePosition;
direction.Normalize();
//Move towards it
currentPos += direction * delta;
它需要乘以经过的时间,这样无论以何种FPS运行,它都会显示相同的值
您可能需要调整速度,但应创建如下模式:
如果你想让导弹慢慢转向目标,你可以用
MathHelper.Lerp
慢慢改变角度。Math.Atan2会将角度返回给你。然后,你可以根据一个小的量(角度)来抵消它,这样它就不会直接指向播放器。我在想:一本关于控制理论的入门书……好吧,但是我如何移动对象,我只是有点困在程序中如何说它。以角度的速度移动它。我可以看一个例子吗,我知道我必须把它移到那个角度,但我怎样才能把它设置成那个角度呢?对不起,我还是个新手。没有惯性的寻的导弹没什么意思。你该怎么避开他们?