p5js中keyIsDown()的问题

问题描述 投票:1回答:1

我正在尝试用p5js和p5.play制作基本的2D游戏。每次尝试执行任何操作时似乎都会出现问题的问题是keyIsDown函数。有没有办法在按下它之前确定按键是否已关闭?如果我用过

upKey = keyIsDown(UP_ARROW);

upKey将显示为undefined,直到我按向上箭头。有没有办法在按下它们之前为这些类型的事物分配相应的布尔值?截至目前,在我按下每个被调用的密钥一次之前,我的游戏将无法正常工作。

javascript p5.js
1个回答
0
投票

keyIsDown() function检查密钥当前是否已关闭,即按下。如果您有一个移动的对象,并且您希望多个键能够同时影响其行为,例如对角移动精灵,则可以使用它。

请注意,箭头键也会导致页面滚动,因此您可能希望使用其他键进行游戏..但如果您想使用箭头键,则这是参考页面中的代码段

let x = 100;
let y = 100;
function setup() {
  createCanvas(512, 512);
}

function draw() {

  if (keyIsDown(LEFT_ARROW)) {
    x -= 5;
  }

  if (keyIsDown(RIGHT_ARROW)) {
    x += 5;
  }

  if (keyIsDown(UP_ARROW)) {
    y -= 5;
  }

  if (keyIsDown(DOWN_ARROW)) {
    y += 5;
  }

  clear();
  fill(255, 0, 0);
  ellipse(x, y, 50, 50);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>

要在不使用箭头键的情况下实现类似的逻辑,您需要确定要使用的键的键代码。

下面是一个使用wasd键的示例,还会记录当前按下的键的键代码。

let x = 50;
let y = 50;
function setup() {
  createCanvas(512, 512);
}
function keyPressed(){
console.log(keyCode);
}

function draw() {
  if (keyIsDown(65)) {
    x -= 5;
    if (x < 0) x = 0;
  }

  if (keyIsDown(68)) {
    x += 5;
    if (x > width) x = width;
  }

  if (keyIsDown(87)) {
    y -= 5;
    if (y < 0) y = 0;
  }

  if (keyIsDown(83)) {
    y += 5;
    if ( y > height) y = height;
  }

  clear();
  fill(255, 0, 0);
  ellipse(x, y, 50, 50);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.7.3/p5.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.