我是HTML5 5/画布/游戏编程的新手,但在读了几本书之后,我一直在修改它。我想我对事情的发展有很好的了解。这个问题提出了几个较小的问题,但总的来说基本上是一个“结构性方法”问题。我没有期待详细的答复,但希望这里和那里的小指针:)这里是一个链接到一个非滚动,目前相当无聊的超级马里奥世界。
超级马里奥世界测试
注意:控件是左/右,空格键要跳转。在我刚刚学习的时候,这只是火狐的设置。
我在这一点上做错什么了吗?
目前,我只关注马里奥如何奔跑和跳跃,并认为我已经把它写得相当好。硬币盒不做任何事情,背景只是一个图像加载的外观。这是我的方法,如果有什么问题,请告诉我:
向前迈进:
现在我已经设置好了Mario的移动方式(我认为还有几件小事情我可能会做,比如快速上升/下降和射击火球)。我想我可以搞清楚这一点,但当涉及到可视化以下内容时,以及HTML5 5/画布如何轻松地处理这些问题时,我真的不知所措:
感谢大家!我将用结果/解决方案来更新这一点:)
发布于 2012-08-21 03:21:08
哇,好吧。我真的很喜欢你的问题,因为你显然在这方面做了很多思考,但部分原因是因为你的问题非常宽泛,而且对话性很强。你最好找个论坛问这个问题。
...That说的是,我将回答我有资格的几点,没有特别的顺序。:)
编辑:我想澄清我关于“水平移动”的第一点。本质上,您不希望做的是,每次相机移动屏幕上的每个实体,或将所有实体位置存储为与摄像机位置的偏移(在这种情况下,每次相机移动时,您仍然必须移动所有的东西)。
您的理想方法是存储您的敌人,块,地形位置的X/Y坐标,是从绝对左上角的水平(在最开始)。为了呈现一个框架,您基本上可以这样做:(伪代码,因为我们讨论的是一种假想的级别格式!)
function GetVisible(x,width,level_entities_array) {
for (i = 0; i < count(level_array); i++){
if (level_entities_array[i][x] > x && level_entities_array[i][x] < x+width) {
visible_elements[] = level_entities_array[i][x];
}
}
return visible_elements;
}砰,你有所有应该在窗户里的东西。现在,从实体的x位置和ZAP减去相机的x偏移量,就可以在画布上得到它的位置。假装成一个团队,因为事情变得真实了。
你会注意到我不想在Y轴上乱选。这可以通过外推来纠正,我猜你可以处理,因为你已经做了这么多了。这将是必要的,如果你想做任何马里奥风格的垂直探索。
是的,我知道我的伪代码看起来像C#和JavaScript的邪恶之爱。抱歉,晚上11:30我就是这样滚的。;)
https://stackoverflow.com/questions/12047969
复制相似问题