В настоящее время я создаю игру 2d-плитки, и мне интересно, нужно ли перемещать плитки или персонаж?Мне нужно переместить плитки или игрока в мир 2d плитки?
Я задаю этот вопрос, потому что я уже создал «карту плитки 2d», но он работает слишком медленно, и я не могу его исправить. Я попробовал все сейчас, и результат в том, что я получаю 30 кадров в секунду.
Причина, по которой он работает слишком медленно, заключается в том, что каждые 1 мс с таймером плитки перерисовываются. Но я не могу понять, как решить эту проблему.
Если кто-то может мне помочь, я был бы очень признателен!
Это, как я сделать карту:
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 Прежде всего, спасибо за ваш комментарий! Я не понимаю, что вы говорите. Мне нужно перерисовать все плитки, потому что я хочу, чтобы плитки перемещались, поэтому он будет выглядеть так, как игрок идет по «миру». Кроме того, я никогда не использовал функцию камеры, и я бы не знал, с чего начать. –
Вы прочитали сообщение, которое было связано с этим комментарием? Если бы у вас было, вам не нужно было бы говорить *, я бы не знал, с чего начать. *. Люди предоставляют ссылки на другие вопросы, чтобы помочь; это не очень приятно игнорировать их после того, как они сделали работу, чтобы найти ее для вас. –