我试着用p5js和p5.play制作一个基本的2d游戏。每当我尝试做任何事情时,似乎都会引起问题的一个问题是keyIsDown函数。是否有一种方法在按下键之前确定键是否已按下?如果我用
upKey = keyIsDown(UP_ARROW);upKey将显示为未定义的,直到我按下向上箭头。在按压这些类型的事物之前,是否有任何方法将相应的布尔值分配给它们?到目前为止,我的游戏将无法正常工作,直到我按下每一个涉及的关键一次。
发布于 2019-02-21 16:28:37
keyIsDown()函数检查键当前是否按下,即按下。如果您有一个移动的对象,并且您希望几个键能够同时影响它的行为,例如对角移动一个sprite,则可以使用它。
请注意,箭头键还会导致页面滚动,因此您可能希望在游戏中使用其他键。但是,如果要使用箭头键,这是来自参考页面的代码片段。
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>
要在不使用箭头键的情况下实现类似的逻辑,您需要确定要使用的键的键代码。
下面是一个使用awsd键的示例,它还注销了当前按下的键的键代码。
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>
https://stackoverflow.com/questions/54802201
复制相似问题