移动;照相机“;HTML画布元素的

移动;照相机“;HTML画布元素的,html,canvas,camera,offset,pan,Html,Canvas,Camera,Offset,Pan,我试图找到一种干净的方法来“移动画布元素的摄影机” 这是我的原型游戏(侧滚)。我想有比移动整个节点组来模拟“摄影机”四处移动更好的解决方案 我几乎肯定读过一本简单的操作手册(使用偏移量?),但事实上我没有发现任何类似的东西,这开始引起怀疑。。。我有没有想象过读那本书 谢谢你帮我澄清。。。 J你大概每秒重画整个游戏场景30次(或多或少) 您需要重新绘制整个游戏场景,但首先要将画布上下文平移一些偏移量 context.translate(x,y)正是您想要的。您需要详细了解该方法的使用以及save(

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

这是我的原型游戏(侧滚)。我想有比移动整个节点组来模拟“摄影机”四处移动更好的解决方案

我几乎肯定读过一本简单的操作手册(使用偏移量?),但事实上我没有发现任何类似的东西,这开始引起怀疑。。。我有没有想象过读那本书

谢谢你帮我澄清。。。
J

你大概每秒重画整个游戏场景30次(或多或少)

您需要重新绘制整个游戏场景,但首先要将画布上下文平移一些偏移量

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

当您转换上下文时,随后绘制的所有内容都会按该量移动

因此,您经常使用
drawImage(badguy,50,50)
在50,50处绘制某些东西(可能是敌人)。然后播放器移动,这将
translate
x
更改为-1(因为播放器向右移动),而不是0。您仍然使用命令
drawImage(坏蛋,50,50)
绘制敌人的精灵,但是当您绘制它时,由于
上下文,敌人显示为49,50。translate(-1,0)
命令在绘制之前移动所有内容


当然,当你进入性能领域时,你会希望确保你只画那些在屏幕上可以看到的东西!如果您在
context.translate(-2000,0)
中的级别较低,则不希望再绘制50,50的对象,只绘制与可视区域相交的对象。

太好了!非常感谢。。。我开始觉得我想象了这个翻译的东西。。。太好了:)至于性能方面,屏幕外剔除应该与剪辑相结合,再次感谢!