我目前正在创建一个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首先,感谢您的评论!我真的不明白你在说什么。我必须重新绘制所有的瓷砖,因为我希望瓷砖移动,所以它看起来像玩家在“世界”周围走动。此外,我从来没有使用过相机功能,我不知道从哪里开始。 –
您是否阅读过该评论中链接的帖子?如果你有,你不会说*我不知道从哪里开始*。人们提供其他问题的链接来帮助;在他们完成了为你找到它的工作之后忽略他们是不好的。 –