C# c中的子弹方向#

C# c中的子弹方向#,c#,game-physics,mousemove,C#,Game Physics,Mousemove,我试图做一个游戏,你有一个旋转到鼠标位置的炮塔,点击就是朝鼠标位置发射子弹。问题是,使用我的方法(如下)无法使子弹笔直,因为它们只能向上、向下和45度对角方向移动。此外,我无法找到一种方法,使子弹在到达鼠标位置后继续其方向。我怀疑我处理这个问题的整个方法可能是错误的。。。(因为我对c#还相当陌生)。任何帮助都将不胜感激,谢谢 private void timer1_Tick(object sender, EventArgs e) { int x = pictureBox1.Location.X

我试图做一个游戏,你有一个旋转到鼠标位置的炮塔,点击就是朝鼠标位置发射子弹。问题是,使用我的方法(如下)无法使子弹笔直,因为它们只能向上、向下和45度对角方向移动。此外,我无法找到一种方法,使子弹在到达鼠标位置后继续其方向。我怀疑我处理这个问题的整个方法可能是错误的。。。(因为我对c#还相当陌生)。任何帮助都将不胜感激,谢谢

private void timer1_Tick(object sender, EventArgs e)
{
 int x = pictureBox1.Location.X;
 int y = pictureBox1.Location.Y;
 if (pictureBox1.Location.X < Cursor.Position.X - pictureBox1.Width / 2)
 {
     x = x + 3;
     pictureBox1.Location = new Point(x, y);
 }

 if (pictureBox1.Location.X > Cursor.Position.X - pictureBox1.Width / 2)
 {
     x = x - 3;
     pictureBox1.Location = new Point(x, y);
 }

if (pictureBox1.Location.Y > Cursor.Position.Y - pictureBox1.Height / 2)
 {
     y = y - 3;
     pictureBox1.Location = new Point(x, y);
 }

if (pictureBox1.Location.Y < Cursor.Position.Y - pictureBox1.Height / 2)
 {
     y = y + 3;
     pictureBox1.Location = new Point(x, y);
 }
}
private void timer1\u勾选(对象发送方,事件参数e)
{
int x=pictureBox1.Location.x;
int y=pictureBox1.Location.y;
if(pictureBox1.Location.XCursor.Position.X-pictureBox1.Width/2)
{
x=x-3;
图B1.位置=新点(x,y);
}
if(pictureBox1.Location.Y>Cursor.Position.Y-pictureBox1.Height/2)
{
y=y-3;
图B1.位置=新点(x,y);
}
if(pictureBox1.Location.Y
通过在阵列中保持子弹速度,您可以很容易地解决方向问题:

int[] bulletVelocity = {vx, vy};
式中,vx是x方向上的速度,同样,vy是y方向上的速度。这些将确定在每个计时器滴答声时,您更改项目符号x和y位置的程度

要使它们始终朝着子弹飞去,您需要注册单击位置,并用有问题的子弹按住它。一种解决方案是使用一个Bullet
和一个
对象,您可以在其中设置鼠标单击位置


您还将使用此
设置子弹的初始速度,例如,x和y将与子弹的x和y分量以及点击的不同部分成比例。

您能否更具体地说明如何使用子弹速度阵列?甚至可以添加一段代码?谢谢