使用C#使精灵跟随路径

时间:2011-11-28 22:06:54

标签: c# winforms path sprite

我正在做一个大学计算项目,而且我遇到了一个绊脚石。

我正在制作塔防游戏,我需要制作一个精灵(在这种情况下以图片框的形式)遵循所设定的路径。我尝试在网上和这些论坛上寻找答案,但我找到的几乎每一个都使用XNA或其他一些添加,或者是另一种编码语言。由于我们必须使用大学计算机,安装其他任何东西都不是一个选择,它必须只是标准的C#框架。我试图为航点或故事板寻找替代方案,但我的搜索没有结果。

如果有人能帮助我,我会非常感激 感谢

2 个答案:

答案 0 :(得分:0)

我会填写更多细节,但看看它是如何做作业的,我想我会提供一个大纲:

  PictureBox pbox1 = new PictureBox();
  Point[] path = { new Point(10,100), new Point(150, 60), new Point(100, 120)};
  Timer timer1 = new Timer();
  int curPointIndex = 0;
  int nextPointIndex = 1;
  float percent = 0f;
  float pctIncrement = 1f;

  public Form1()
  {
     InitializeComponent();

     pbox1.Location = path[0];
     pbox1.Size = new Size(32, 32);
     pbox1.BackColor = Color.Red;

     timer1.Interval = 20;
     timer1.Tick += new EventHandler(timer1_Tick);
     timer1.Start();

     this.Controls.Add(pbox1);
     this.components.Add(timer1);
  }

  void timer1_Tick(object sender, EventArgs e)
  {
     percent += pctIncrement;
     // Calculate weighted average based on point number
     // curPointIndex and nextPointIndex in path here.

     // Set pbox1.Location to calculated position here.

     // Check for altering curPointIndex and nextPointIndex here when percent
     // reaches 100 (and reset percent) here.
  }

我已经在我的测试项目中填写了代码并且它可以工作。需要注意的是,精灵在接近的点之间移动的速度要比相距很远的点之间的速度慢,但我不确定这对你的要求是否有问题。如果是,您可以将pctIncrement更改为与当前点和下一个点之间的距离成反比的计算。

答案 1 :(得分:0)

我已经添加了一个答案,但我也有一个完全不同的答案。你说你不想使用第三方框架,我不确定这是否会越过这条线。 Scrolling Game Development Kit 2将允许您为精灵定义地图,精灵和路径,但随后它将生成一个完全独立的项目,可以加载到Visual C#Express中,如果您愿意,可以单独编译。它依赖的一个库是OpenTK,只是为了访问OpenGL来处理图形绘制。那部分可能会越过界限,但它主要用于主要封装在Display.cs中的绘图。它不是用于管理任何精灵或地图或运动的状态。