因此,我尝试在处理过程中对pong进行编码,并且一切正常,并且我可以完美地上下移动拨片,但是,当您尝试同时移动两个拨片时,它们不会移动/它不允许您(我将把它制作成2人游戏,这样2人可以使用相同的键盘来玩,但不同的拨盘使用不同的键)。
我认为这是使用“ key”或“ keyPressed”的问题,因为我认为它不能同时检测到这两种东西?但我似乎无法弄清楚如何解决此问题或任何其他选择。 (请记住,我知道如何移动拨片,只是您不能使用不同的提供的键(例如im试图同时移动它们))
到目前为止,我有两个对象“ Player1”和“ Player2”
请记住,“ y”是y位置,它会根据所按下的键而上升或下降,而“ speed”只是桨将移动的速度。
这是在Player1中。上= w,下= s
void movement() {
if(keyPressed) {
if(key == 'w' || key == 'W') {
y = y - speed; //goes up
} else if (key == 's' || key == 'S') {
y = y + speed; //goes down
}
}
}
这是在Player2中。向上=向上箭头键,向下=向下箭头键
void movement() {
if (keyPressed) {
if(key == CODED) {
if(keyCode == UP) {
y = y - speed; //goes up
} else if (keyCode == DOWN) {
y = y + speed; //goes down
}
}
}
}
没有错误消息,只是不允许您同时移动两个拨片,这是我想做的事情。
答案 0 :(得分:4)
您必须使用keyPressed
和keyReleased()
事件。按下或释放键时,事件将执行一次。
设置按下按键时的状态,或者分别释放按键时的状态:
Boolean player1_up = false;
Boolean player1_down = false;
Boolean player2_up = false;
Boolean player2_down = false;
void keyPressed() {
if (keyCode == UP)
player1_up = true;
else if (keyCode == DOWN)
player1_up = true;
if (key == 'w' || key == 'W')
player2_up = true;
else if (key == 's' || key == 'S')
player2_down = true;
}
void keyReleasd() {
if (keyCode == UP)
player1_up = false;
else if (keyCode == DOWN)
player1_up = false;
if (key == 'w' || key == 'W')
player2_up = false;
else if (key == 's' || key == 'S')
player2_down = false;
}
在player1_up
函数中使用状态player1_down
,player2_up
,player2_down
和movement
。