如何让我的播放器沿对角线和水平线移动
how to make my player move in diagonal lines and horizontal lines
我有以下代码可以使椭圆移动到左右顶部和底部。但现在玩家一次只能朝一个方向移动。所以如果玩家向左移动,他就不能移动到顶部或底部。我如何编写代码以便玩家可以同时左右移动以及上下移动?任何建议表示赞赏。 :)
查看我目前的代码:
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()
函数中使用它们移动你的演员。
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;
}
}
(来源:happycoding.io)
有关处理中用户输入的 this tutorial 中可以找到更多信息。
我有以下代码可以使椭圆移动到左右顶部和底部。但现在玩家一次只能朝一个方向移动。所以如果玩家向左移动,他就不能移动到顶部或底部。我如何编写代码以便玩家可以同时左右移动以及上下移动?任何建议表示赞赏。 :)
查看我目前的代码:
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()
函数中使用它们移动你的演员。
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;
}
}
(来源:happycoding.io)
有关处理中用户输入的 this tutorial 中可以找到更多信息。