gpt4 book ai didi

java - 如何让我的玩家沿对角线和水平线移动

转载 作者:行者123 更新时间:2023-11-30 07:13:24 24 4
gpt4 key购买 nike

我有以下代码使椭圆移动到左、右、上和下。但现在玩家一次只能朝一个方向移动。因此,如果玩家向左移动,他就无法移动到顶部或底部。我该如何编写代码,以便玩家可以同时向左和向右移动以及向顶部和底部移动?任何建议表示赞赏。 :)

查看我到目前为止的代码:

void userInput() {
if (keyPressed && (key == 's')) {
speedY = 1;
println("yes");
}
if (keyPressed && (key == 'w')) {
speedY = -1;
println("yes");
}
if (keyPressed && (key == 'd')) {
println("yes");
speedX = 1;
}
if (keyPressed && (key == 'a')) {
println("yes");
speedX = -1;
}
if (keyPressed &&(key != 'a' && key != 'd')) {
println("no");
speedX = 0;
}

if (keyPressed &&(key != 'w' && key != 's')) {
println("no");
speedY =0;
}
}

void movement() {
x = x + speedX;
y = y + speedY;

}

最佳答案

实现此目的的一种方法是使用 boolean 值来跟踪按下了哪些键。在 keyPressed() 中将它们设置为 true,在 keyReleased() 中将它们设置为 false,并使用它们在 draw() 函数中移动你的 Actor 。

boolean upPressed = false;
boolean downPressed = false;
boolean leftPressed = false;
boolean rightPressed = false;

float circleX = 50;
float circleY = 50;

void draw() {
background(200);

if (upPressed) {
circleY--;
}

if (downPressed) {
circleY++;
}

if (leftPressed) {
circleX--;
}

if (rightPressed) {
circleX++;
}

ellipse(circleX, circleY, 20, 20);
}

void keyPressed() {
if (keyCode == UP) {
upPressed = true;
}
else if (keyCode == DOWN) {
downPressed = true;
}
else if (keyCode == LEFT) {
leftPressed = true;
}
else if (keyCode == RIGHT) {
rightPressed = true;
}
}

void keyReleased() {
if (keyCode == UP) {
upPressed = false;
}
else if (keyCode == DOWN) {
downPressed = false;
}
else if (keyCode == LEFT) {
leftPressed = false;
}
else if (keyCode == RIGHT) {
rightPressed = false;
}
}

diagonal movement
(来源:happycoding.io)

更多信息可以在this tutorial中找到关于处理中的用户输入。

关于java - 如何让我的玩家沿对角线和水平线移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38804901/

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