Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 需要一种让我的角色在左/右移动时跳跃的方法吗_Java - Fatal编程技术网

Java 需要一种让我的角色在左/右移动时跳跃的方法吗

Java 需要一种让我的角色在左/右移动时跳跃的方法吗,java,Java,我已经在y轴上进行了良好的跳跃,但我希望能够在按下左/右键的同时使用跳跃中的“dx”(例如,如果我按下右键向右移动,并在按住它的同时跳跃,角色将以“对角线”方式移动) 我的主要跳转代码(按下跳转键时计时器激活): 现在,我的KeyEvent代码: if (command == KeyEvent.VK_RIGHT){ x_pos += 5; right = true; }

我已经在y轴上进行了良好的跳跃,但我希望能够在按下左/右键的同时使用跳跃中的“dx”(例如,如果我按下右键向右移动,并在按住它的同时跳跃,角色将以“对角线”方式移动)

我的主要跳转代码(按下跳转键时计时器激活):

现在,我的KeyEvent代码:

            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
    }
}