Javascript 如何将游戏角色保留在画布中?
我正在开发一个类似蛙人的游戏,下面的代码用于在画布元素周围移动我的角色。代码可以工作,但是角色可以“走出/离开”画布。我尝试将Javascript 如何将游戏角色保留在画布中?,javascript,canvas,web-applications,keyboard,Javascript,Canvas,Web Applications,Keyboard,我正在开发一个类似蛙人的游戏,下面的代码用于在画布元素周围移动我的角色。代码可以工作,但是角色可以“走出/离开”画布。我尝试将handleInput()放入嵌套在if语句中的update(dt)(更新检查更新)(if player.x is>不要这样做…)中,但我得到了一个语法错误。开关中的三元语句起作用-然而,在我遵循的教程中,他们就是这样做的,我正在努力不只是“复制”教程。任何建议都将不胜感激 window.allowedKeys = { 37: 'left', 38: 'u
handleInput()
放入嵌套在if语句中的update(dt)
(更新检查更新)(if player.x is>不要这样做…
)中,但我得到了一个语法错误。开关
中的三元语句起作用-然而,在我遵循的教程中,他们就是这样做的,我正在努力不只是“复制”教程。任何建议都将不胜感激
window.allowedKeys = {
37: 'left',
38: 'up',
39: 'right',
40: 'down'
};
const allowedKeys = window.allowedKeys;
update(dt){
}
handleInput(input){
switch(input) {
case 'left':
allowedKeys['left'] = this.x -= 1;
break;
case 'up':
allowedKeys['up'] = this.y -= 1;
break;
case 'right':
allowedKeys['right'] = this.x += 1;
break;
case 'down':
allowedKeys['down'] = this.y += 1;
break;
default:
break;
}
}
document.addEventListener('keyup', function(e) {
player.handleInput(allowedKeys[e.keyCode]);
});
将此添加到update()中修复了以下问题:)具有左/右屏幕滚动的额外好处
update(dt){
if(player.x > 5){
player.x = 0;
}
if(player.x < 0){
player.x = 5;
}
if(player.y > 4.5){
player.y -= 1;
}
}
更新(dt){
如果(player.x>5){
player.x=0;
}
if(player.x<0){
player.x=5;
}
如果(玩家y>4.5){
player.y-=1;
}
}
我认为您想要验证用户按下的键是什么,这里是一个示例,我使用prototype,但我相信您使用的是es6类。您不需要声明全局var allowedkey,也不需要更新它。我希望这对你有帮助
//使用javascript进行移动
常量允许密钥={
37:"左",,
38:"向上",,
39:"对",,
40:‘向下’
};
功能播放器(目标){
这是0.x=0
这个。y=0
this.target=target
}
Player.prototype.handleInput=函数(输入){
开关(输入){
案例“左”:
这个.x-=1;
打破
案例“向上”:
这个.y-=1;
打破
案例“正确”:
这个.x+=1;
打破
案例“关闭”:
这个。y+=1;
打破
违约:
打破
}
}
Player.prototype.update=函数(dt){
}
常量玩家=新玩家(“玩家1”)
文件。添加的文件列表器(“键控”,功能(e){
player.handleInput(允许键[e.keyCode]);
常量元素=document.getElementById(player.target)
element.innerHTML=“x:”+player.x+“y:”+player.y
});代码>
按箭头
手动输入功能吗?函数
关键字(或箭头符号)在哪里?完全忘了添加它!对不起document.addEventListener('keyup',函数(e){player.handleInput(allowedKeys[e.keyCode]);})代码>更新你的问题不要只是在评论中添加你缺少的代码。。。。最好是创建一个代码段。这段代码仍然不完整,现在看起来handleInput应该是一个“player”对象的方法。那在哪里。