我正在进行在线游戏开发。我正在尝试制作一个在线FPS游戏,而且我只能达到我需要更新角色的程度。我只是使用绘图和更新功能来保持我的代码简单。当html加载时,我执行两个:(这是必要的吗?)
<body onload='DRAW(); UPDATE();'>
绘图功能将播放器绘制到屏幕上,并且更新应该检查按键以移动角色。我正在尝试使用此更新脚本:
function UPDATE()
{
update = setInterval(UPDATE, 60);
}
据我所知,它运行正常,因为当我尝试编辑我用于测试网站的在线IDE(c9.io)中的代码时,它会在网站运行时冻结。我也在draw函数中调用eventListeners。 (如果我想每帧测试一个键,这是否合适?)
function DRAW()
{
window.addEventListener('keydown', function (e) {
keys.keys = (keys.keys || []);
keys.keys[e.keyCode] = true;
});
window.addEventListener('keyup', function (e){
keys.keys[e.keyCode] = false;
});
}
我的问题是:
是否有更简单的方法让每个帧都更新脚本?
我可以用来制作一个JavaScript插件(比如Three.js) 我自己开发这个更容易吗?
非常感谢任何知识。
答案 0 :(得分:0)
这会让一切都崩溃:
function UPDATE()
{
update = setInterval(UPDATE, 60);
}
您每60ms递归创建一个新间隔;第一次调用UPDATE时,您创建一个间隔,每隔60ms创建一个新间隔。所有新创建的间隔都是相同的。不知道你真的想在这里做什么。
我也在draw函数中调用eventListeners。 (这是正确的吗? 如果我想每帧测试一个键?)
在draw函数中创建eventlistener是很好的,只要你只调用一次这个函数。我想你不会这样。每次调用DRAW()时,都会添加一组新的eventlisteners,你真的不想要它。
你需要的是一种游戏循环形式。解释如何创建FPS游戏比我能做的多一点,但你可以从查看这篇文章开始Anatomy of a video game