我正在尝试找到一种干净的方式来“移动画布元素的相机”。
这是我的原型游戏(横向卷轴)。我很想有一个比移动整个节点集来模拟移动的“相机”更好的解决方案。
几乎可以肯定已经阅读了一个简单的操作方法(使用偏移量?)但我没有找到类似的东西这一事实开始引起怀疑......我是否想象过阅读它!?
感谢帮助我澄清... J
大概你每秒重绘整个游戏场景 30 次(或多或少)
您需要重新绘制整个游戏场景,但首先将 Canvas 上下文平移一些偏移量。
context.translate(x,y)
正是你想要的。你会想了解它的用法以及save()
andrestore()
方法。
当您翻译上下文时,之后绘制的所有内容都会移动该数量。
所以你经常在 50,50 处使用drawImage(badguy,50,50)
. 然后玩家移动,这会将 of 更改x
为translate
-1(因为玩家向右移动)而不是 0。您仍然使用命令绘制敌人精灵drawImage(badguy,50,50)
,但是当您绘制它时,敌人会出现,就好像它在49,50 因为context.translate(-1,0)
命令在绘制之前移动所有内容。
当然,当您开始表演时,您会想要确保您只绘制可以在屏幕上实际看到的东西!如果您的水平远远低于context.translate(-2000,0)
,您不想再在 50,50 处绘制对象,只需要与可视区域相交的对象。