Java 需要一种让我的角色在左/右移动时跳跃的方法吗
我已经在y轴上进行了良好的跳跃,但我希望能够在按下左/右键的同时使用跳跃中的“dx”(例如,如果我按下右键向右移动,并在按住它的同时跳跃,角色将以“对角线”方式移动) 我的主要跳转代码(按下跳转键时计时器激活): 现在,我的KeyEvent代码:Java 需要一种让我的角色在左/右移动时跳跃的方法吗,java,Java,我已经在y轴上进行了良好的跳跃,但我希望能够在按下左/右键的同时使用跳跃中的“dx”(例如,如果我按下右键向右移动,并在按住它的同时跳跃,角色将以“对角线”方式移动) 我的主要跳转代码(按下跳转键时计时器激活): 现在,我的KeyEvent代码: if (command == KeyEvent.VK_RIGHT){ x_pos += 5; right = true; }
if (command == KeyEvent.VK_RIGHT){
x_pos += 5;
right = true;
}
if (command == KeyEvent.VK_LEFT) {
x_pos -= 5;
right = false;
}
if (command == KeyEvent.VK_UP) {
if (!(timer.isRunning()))
dy = -20;
timer.start();
}
dr.repaint();
下面是我将如何实现输入逻辑。请注意,当您想进一步深入研究输入处理时,有几种选择。使用此实现,键盘输入与它们对游戏世界的影响分离,这在几个方面都很方便。例如,无论按键/重复的频率如何,角色的速度都是恒定的(假定游戏循环/移动的计时正确处理) 无论如何,一些伪代码:
// Global:
array keysdown;
keysdown[left] = false;
keysdown[right] = false;
keysdown[up] = false;
// The all-important game loop:
while (true) {
pollInputs();
doMovement();
draw();
}
function pollInputs () {
foreach (key that you want to handle) {
if (key.state == down) {
keysdown[key] = true;
} else {
keysdown[key] = false;
}
}
}
function doMovement () {
if (keysdown[left]) {
// move character left
} else if (keysdown[right]) {
// move character right
}
if (keysdown[up]) {
// initiate jump
}
}
请你再具体一点好吗?我不太明白(对不起),你必须发布更多的代码,这样我才能了解你的游戏架构。例如,您可以看到检查键的整个函数,以及调用它的函数。
// Global:
array keysdown;
keysdown[left] = false;
keysdown[right] = false;
keysdown[up] = false;
// The all-important game loop:
while (true) {
pollInputs();
doMovement();
draw();
}
function pollInputs () {
foreach (key that you want to handle) {
if (key.state == down) {
keysdown[key] = true;
} else {
keysdown[key] = false;
}
}
}
function doMovement () {
if (keysdown[left]) {
// move character left
} else if (keysdown[right]) {
// move character right
}
if (keysdown[up]) {
// initiate jump
}
}