(js)if游戏更新功能中的按键声明

时间:2017-11-10 18:31:18

标签: javascript

(游戏)当玩家对象到达顶部时,对象y移动应停止移动以避免通过顶部。

我为此做了一个if语句,它正在发挥作用。

if(playerObject.yCoordinate <= 0){

    function_To_Stop_Y_movment();

}

然而,玩家无法向下移动,因此垂直卡住。

我需要的是在if语句中添加一个额外的逻辑,检查是否按下了keyCode 38

if (playerObject.yCoordinate <= 0 && /* keyCode 38 is pressed */) {

因此,当玩家按下向上箭头时,if语句才会成立。

此if语句位于每0.02秒(setInterval(updateGame, 20);运行一次的更新函数中。

编辑:

这就是我添加keyListener的方法:

 document.addEventListener("keydown", keyDownHandler, false);
 function keyDownHandler(e) {
            if (e.keyCode == 38 ) { 

但我不知道如何将该按键检查添加到该更新功能中。

1 个答案:

答案 0 :(得分:2)

你可以有一个单独的变量并将其设置为&#34; true&#34;按下向上箭头时。然后在if语句中使用该变量。如果你这样做,你必须在某个时候将它重新设置为假。

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    // ...
    modelBuilder.Entity<MyItem>().HasKey(e => new { e.user_id, e.item_id });
    // ...
}

或者,您可以在keydown函数中添加位置检查。如果位置在顶部,则不执行移动功能。如果它在其他任何地方,那么继续。基本上这个:

var keyup = false;
function keyDownHandler(e) {
    if (e.keyCode == 38 ) { 
        keyup == true;
    }
}

if (playerObject.yCoordinate <= 0 && keyup) {
    // do your stuff then...
    keyup == false;
}

这将检查位置,如果在顶部它将什么都不做。如果它在任何其他地方,它将移动角色。