C# c中的子弹方向#
我试图做一个游戏,你有一个旋转到鼠标位置的炮塔,点击就是朝鼠标位置发射子弹。问题是,使用我的方法(如下)无法使子弹笔直,因为它们只能向上、向下和45度对角方向移动。此外,我无法找到一种方法,使子弹在到达鼠标位置后继续其方向。我怀疑我处理这个问题的整个方法可能是错误的。。。(因为我对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
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分量以及点击的不同部分成比例。您能否更具体地说明如何使用子弹速度阵列?甚至可以添加一段代码?谢谢