gpt4 book ai didi

java - 当 "X px"仅被按下一次时使 block /角色移动 "W or w",并且当 "W and w"被按住时不继续行走

转载 作者:太空宇宙 更新时间:2023-11-04 09:23:11 34 4
gpt4 key购买 nike

当我按“W 或 w”但仅一次时,我想让我的矩形/字符移动“X px”。按住“W”和“w”时不继续移动。我尝试使用一个变量创建一个“Key Released”函数,该变量在按下“W 或 w”时会发生变化。但它并没有真正起作用,它只是使矩形/字符移动了“X px”一次,然后就不再朝那个方向移动了。简而言之,我希望每次“单击”按钮时矩形/字符都会移动 50px,有点像一步一步。而且不是流畅的运动。有谁可以帮忙吗?代码是用Java、Processing编写的。

class Character {

float x = 0;
float y = 0;

//VV Movement VV

void move() {
if (keyPressed) {
if (key == 'w' || key == 'W') {
//terms, move forward/up, Y-axel.
y -= 50;
}
}
if (keyPressed) {
if (key == 'a' || key == 'A') {
//terms, move right, X-axel.
x -= 50;
}
}
if (keyPressed) {
if (key == 's' || key == 'S') {
//terms, move backwards/down, Y-axel.
y += 50;
}
}
if (keyPressed) {
if (key == 'd' || key == 'D') {
//terms, move left, X-axel.
x += 50;
}
}
}

最佳答案

I want to make my Rectangle/Character move [...] but only once

添加keyPressed()事件并从事件中调用 move,但不要在 draw() 中调用它.

注意每次按下一个键时都会调用一次keyPressed。因此,当按下某个键时,角色只会移动一次。但由于操作系统可能会处理按键重复,因此必须存储最后按下的按键。如果在 keyReleased 发生之前再次按下同一键,则必须跳过它。例如:

Character ch = new Character();
int lastKey = 0;
void keyPressed() {
if (lastKey != key) {
lastKey = key;
ch.move();
}
}

void keyReleased() {
lastKey = 0;
}

在示例中,ch 假定为您的Character 实例。

关于java - 当 "X px"仅被按下一次时使 block /角色移动 "W or w",并且当 "W and w"被按住时不继续行走,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58060393/

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