我正在做一個大學計算項目,並且我碰到了一個絆腳石。讓一個精靈沿着一條路徑使用C#
我正在製作一個塔防遊戲,我需要製作一個精靈(在這種情況下是以圖片框的形式)遵循所設定的路徑。我試着在線尋找並在這些論壇上尋找答案,但幾乎我發現每個人都使用XNA或其他附加語言,或者使用其他編碼語言。由於我們必須使用大學計算機,所以安裝其他任何東西都不是一種選擇,它必須只是標準的C#框架。我試圖找到航點或故事板的替代品,但我的搜索沒有結果。
如果有人能夠幫助我,我會非常感激。
感謝
我正在做一個大學計算項目,並且我碰到了一個絆腳石。讓一個精靈沿着一條路徑使用C#
我正在製作一個塔防遊戲,我需要製作一個精靈(在這種情況下是以圖片框的形式)遵循所設定的路徑。我試着在線尋找並在這些論壇上尋找答案,但幾乎我發現每個人都使用XNA或其他附加語言,或者使用其他編碼語言。由於我們必須使用大學計算機,所以安裝其他任何東西都不是一種選擇,它必須只是標準的C#框架。我試圖找到航點或故事板的替代品,但我的搜索沒有結果。
如果有人能夠幫助我,我會非常感激。
感謝
我將填補更多的細節,但看到它是如何的功課,我想我會只提供一個綱要:
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更改爲與當前點和下一個點之間的距離成反比的計算。
我已經添加了一個答案,但我也有一個完全不同的答案。你說你不想使用第三方框架,我不確定這是否跨越了界限。 Scrolling Game Development Kit 2可以讓你定義地圖,精靈和路徑,然後它會生成一個完全獨立的項目,可以加載到Visual C#Express中,如果你願意,可以獨立編譯。它依賴的一個庫是OpenTK,只是爲了訪問OpenGL來處理圖形的繪製。這部分可能會越過這條線,但主要是對於大部分封裝在Display.cs中的繪圖。這不是用於管理任何精靈或地圖或動作的狀態。
如果您已經知道如何在WinForms中放置位圖,您應該能夠從任何XNA示例中獲取沿路徑部分的移動。例如。看到這個問題http://stackoverflow.com/questions/3273396/animate-sprite-along-a-curve-path-in-xna –
他不使用XNA - 他只是引用它作爲「我發現每個人都使用它」。也就是說,我懷疑「正確的」答案可能與定時器控制有關,並且從一個航點到另一個航點都有LERPing。 =) – Dracorat