使用c#创建一个精灵遵循路径
本文关键字:精灵 一个 路径 创建 使用 | 更新日期: 2023-09-27 18:16:14
我正在做一个大学里的计算机项目,我遇到了一点障碍。
我正在制作一款塔防游戏,我需要创造一个精灵(在这种情况下是以图片框的形式)遵循所设置的路径。我试着在网上和这些论坛上寻找答案,但我找到的几乎每个人都使用XNA或其他一些插件,或者使用另一种编码语言。由于我们必须使用学校的计算机,所以不能安装其他任何东西,只能安装标准的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更改为与当前点和下一个点之间的距离成反比的计算。