移动HTML Canvas元素的“相机”

时间:2011-11-27 18:40:49

标签: html5 canvas camera offset pan

我正试图找到一种干净的方法来“移动画布元素的相机”。

这是我的原型游戏(侧卷轴)。我很乐意认为有一个更好的解决方案,就是移动整个节点集来模拟移动的“相机”。

几乎可以肯定已经读过一个简单的操作方法(使用偏移?)但事实上我没有发现任何类似的东西开始引起怀疑......我是否想过要阅读它??

感谢帮助我澄清...... Ĵ

1 个答案:

答案 0 :(得分:8)

据推测,您每秒重绘整个游戏场景30次(或多或少)

您需要重绘整个游戏场景,但首先将Canvas上下文翻译一些偏移量。

context.translate(x,y)正是您想要的。您需要了解使用该方法以及save()restore()方法。

当您翻译上下文时,之后绘制的所有内容都会移动该数量。

所以你不断使用drawImage(badguy,50,50)以50,50画出一些东西(可能是一个敌人)。然后玩家移动,将x的{​​{1}}更改为-1(因为玩家向右移动)而不是0.你仍然使用命令translate绘制敌方精灵,但是当你绘制它时,敌人就会显示为49,50,因为drawImage(badguy,50,50)命令会在绘制之前移动所有内容。

当然,当你进入表演时,你会想要确保你只画出可以在屏幕上看到的东西!如果你的水平远低于context.translate(-1,0)的水平,你不想再以50,50绘制物体,只有那些与可视区域相交的物体。