我目前正在創建一個2D遊戲,我想知道如果瓷磚必須移動或字符?我是否需要在2d瓷磚世界中移動瓷磚或玩家?
我問這個問題,因爲我已經創建了「2D瓷磚地圖」,但它運行速度太慢,我無法修復它。我現在試了一切,結果是我得到30幀/秒。
運行速度太慢的原因是因爲每1ms帶一個定時器,瓷磚正在重繪。但我無法弄清楚如何解決這個問題。
如果有人能幫助我,我會非常感激!
我這是怎麼使地圖:
public void makeBoard()
{
for (int i = 0; i < tileArray.GetLength(0); i++)
{
for (int j = 0; j < tileArray.GetLength(1); j++)
{
tileArray[i, j] = new Tile() { xPos = j * 50, yPos = i * 50 };
}
}
}
在這裏,我重繪每1毫秒以上的瓷磚和精靈:
private void Wereld_Paint_1(object sender, PaintEventArgs e)
{
//label1.Text = k++.ToString();
using (Graphics grap = Graphics.FromImage(bmp))
{
for (int i = 0; i < tileArray.GetLength(0); i++)
{
for (int j = 0; j < tileArray.GetLength(1); j++)
{
grap.DrawImage(tileArray[i, j].tileImage, j * 50, i * 50, 50, 50);
}
}
grap.DrawImage(player.movingObjectImage, player.xPos, player.yPos, 50, 50);
grap.DrawImage(enemyGoblin.movingObjectImage, enemyGoblin.xPos, enemyGoblin.yPos, 50, 50);
groundPictureBox.Image = bmp;
// grap.Dispose();
}
}
這是一個特定的定時器間隔:
private void UpdateTimer_Tick(object sender, EventArgs e)
{
if(player.Update()==true) // true keydown event is fired
{
this.Invalidate();
}
label1.Text = lastFrameRate.ToString(); // for fps rate show
CalculateFrameRate(); // for fps rate show
}
只畫那些應該出現在屏幕上的瓦片,並用相機來幫你畫的東西:http://stackoverflow.com/questions/9997006/slick2d-and-jbox2d-how- to-draw?answertab = votes#tab-top – user3814613
@ user3814613首先,感謝您的評論!我真的不明白你在說什麼。我必須重新繪製所有的瓷磚,因爲我希望瓷磚移動,所以它看起來像玩家在「世界」周圍走動。此外,我從來沒有使用過相機功能,我不知道從哪裏開始。 –
您是否閱讀過該評論中鏈接的帖子?如果你有,你不會說*我不知道從哪裏開始*。人們提供其他問題的鏈接來幫助;在他們完成了爲你找到它的工作之後忽略他們是不好的。 –