gpt4 book ai didi

javascript - keyIsDown 在 key 未关闭时运行?

转载 作者:行者123 更新时间:2023-12-05 00:35:44 25 4
gpt4 key购买 nike

我正在 p5.JS 中开发一个基本的第一人称相机 Controller ,我在 if 语句中使用 move 函数(使用 keyIsDown ),当没有按下键时它仍然移动相机(我意思是像它向下一秒钟然后不再按下)。
我也试过使用 while ()但这会使它崩溃。

let d;
let cam;
let x, y, z;
let img;
let floor_texture;
//place holder image
floor_texture = 'https://miro.medium.com/max/1400/1*WI5Zw1eKEKNmRX3zreeUHw.png';

function preload() {
img = loadImage(floor_texture);
}

function setup() {
createCanvas(windowWidth, windowHeight, WEBGL);
x = 0;
y = 0;
z = 0;
cam = createCamera();
}

function draw() {
d = dist
background(255);
cam.pan(-movedX * 0.005);
cam.tilt(movedY * 0.005);
fill('white');
sphere(25);
fill('red');
texture(img);
translate(0, 350, 0)
box(5000, 500, 5000)
if (keyIsPressed && keyCode === 69) {
requestPointerLock();
}
cam.move(x, y, z);
if (keyIsDown(87)) {
z -= 0.1;
}
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.4.1/p5.js"></script>

最佳答案

那是因为你没有设置新的z每次keyIsDown(87) , 但你 cam.movez作为论据。
所以像:

z = 0;
cam.move(x,y,z); //here z = 0, so it doesn't move.
z -= 0.1;
cam.move(x,y,z); //here z = -0.1, so it moves, even if keyIsDown isn't true anymore.
每次 keyIsDown(87)true , 它只是增加了 cam 的速度 move s。
如果要设置 z像这样的位置,您必须找到一种方法来设置相机位置,而不是移动它。
或者您可以执行以下操作:
draw() {
...



if (keyIsDown(87)) {
dz = -0.1;
} else {
dz = 0;
}

cam.move(dx,dy,dz)
...
}

关于javascript - keyIsDown 在 key 未关闭时运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72384216/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com