使用c#创建一个精灵遵循路径

本文关键字:精灵 一个 路径 创建 使用 | 更新日期: 2023-09-27 18:16:14

我正在做一个大学里的计算机项目,我遇到了一点障碍。

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

如果有人能帮助我,我将非常感激。
由于

使用c#创建一个精灵遵循路径

我已经添加了一个答案,但我也有一个完全不同的答案。你说你不想使用第三方框架,我不确定这是否越界了。滚动游戏开发工具包2将让你定义地图、精灵和精灵要遵循的路径,但随后它将生成一个完全独立的项目,可以加载到Visual c# Express中并独立编译(如果你愿意的话)。它所依赖的一个库是OpenTK,只是为了访问OpenGL来处理图形的绘制。那部分可能越界了,但它主要是用于绘图的它主要封装在display。cs中。这不是用于管理任何精灵或地图或移动的状态。

我会填写更多细节,但鉴于这是家庭作业,我想我将只提供一个大纲:

  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更改为与当前点和下一个点之间的距离成反比的计算。