2011-11-28 80 views
0

我正在做一個大學計算項目,並且我碰到了一個絆腳石。讓一個精靈沿着一條路徑使用C#

我正在製作一個塔防遊戲,我需要製作一個精靈(在這種情況下是以圖片框的形式)遵循所設定的路徑。我試着在線尋找並在這些論壇上尋找答案,但幾乎我發現每個人都使用XNA或其他附加語言,或者使用其他編碼語言。由於我們必須使用大學計算機,所以安裝其他任何東西都不是一種選擇,它必須只是標準的C#框架。我試圖找到航點或故事板的替代品,但我的搜索沒有結果。

如果有人能夠幫助我,我會非常感激。
感謝

+4

如果您已經知道如何在WinForms中放置位圖,您應該能夠從任何XNA示例中獲取沿路徑部分的移動。例如。看到這個問題http://stackoverflow.com/questions/3273396/animate-sprite-along-a-curve-path-in-xna –

+0

他不使用XNA - 他只是引用它作爲「我發現每個人都使用它」。也就是說,我懷疑「正確的」答案可能與定時器控制有關,並且從一個航點到另一個航點都有LERPing。 =) – Dracorat

回答

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更改爲與當前點和下一個點之間的距離成反比的計算。

0

我已經添加了一個答案,但我也有一個完全不同的答案。你說你不想使用第三方框架,我不確定這是否跨越了界限。 Scrolling Game Development Kit 2可以讓你定義地圖,精靈和路徑,然後它會生成一個完全獨立的項目,可以加載到Visual C#Express中,如果你願意,可以獨立編譯。它依賴的一個庫是OpenTK,只是爲了訪問OpenGL來處理圖形的繪製。這部分可能會越過這條線,但主要是對於大部分封裝在Display.cs中的繪圖。這不是用於管理任何精靈或地圖或動作的狀態。