javascript - p5js 中的 keyIsDown() 问题
问题描述
我正在尝试用 p5js 和 p5.play 制作一个基本的 2d 游戏。每次我尝试做任何事情时似乎都会引起问题的一个问题是 keyIsDown 函数。有没有办法在按下之前确定一个键是否按下?如果我用
upKey = keyIsDown(UP_ARROW);
upKey 将显示为未定义,直到我按下向上箭头。有没有办法在按下它们之前将相应的布尔值分配给这些类型的东西?截至目前,我的游戏将无法正常运行,直到我按下每个涉及的键一次。
解决方案
keyIsDown ()函数检查键当前是否按下,即按下。如果您有一个移动的对象,并且您希望多个键能够同时影响其行为,例如沿对角线移动精灵,则可以使用它。
请注意,箭头键也会导致页面滚动,因此您可能希望在游戏中使用其他键.. 但如果您想使用箭头键,这是参考页面中的代码片段
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>
推荐阅读
- java - 如果我有@EnableCaching,为什么没有 CacheManager 缓存不起作用?
- python - VSC 中 Zen 模式的问题
- python - softmax 的 TensorFlow 问题
- c# - MongoDB 阶段到 C# API
- python - 无法使用 Python 的 pdfrw 库获取可填充框的密钥
- sql - SQL 计数 where 列大于 group by 中的其他列?
- xml - Unit_count 和 unit_count_type 似乎在亚马逊产品提要中是必需的,但在产品 XML 中放置在哪里?
- volttron - 防火墙后的 VOLTTRON Central
- arrays - 合并两个排序后的数组,没有多余的空间。显示错误的输出
- javascript - 我在使用 regexExp 的 javascript 中遇到问题