gpt4 book ai didi

java - Greenfoot - isKeyDown() 似乎保持其值(value)

转载 作者:行者123 更新时间:2023-12-02 13:17:36 24 4
gpt4 key购买 nike

这是游戏的冲刺功能,如果玩家剩余的弹力大于 0%,则他可以冲刺,如果为 0%,则玩家无法冲刺。如果玩家没有冲刺,那么冲刺百分比将开始重新生成。

问题:当玩家达到 0% 冲刺时,玩家仍然可以冲刺。

public class User extends Characters
{
private int walk = 3;
private int run = 10;
private int speed = walk;

private boolean isRunning = false;
private int runDuration = 100;
private int baseRunDuration = 100;
private int runCoolDown = 300;


public void act()
{
playerMove();
}

//Contains movement inputs as well as run imputs
void playerMove(){
getWorld().showText("Run Duration: " + runDuration, 100, 100);

if(Greenfoot.isKeyDown("w") ){
setLocation(getX(), getY()-speed);
}
if(Greenfoot.isKeyDown("a")){
move(-speed);
}
if(Greenfoot.isKeyDown("s")){
setLocation(getX(), getY()+speed);
}
if(Greenfoot.isKeyDown("d")){
move(+speed);
}

if(Greenfoot.isKeyDown("shift") && runDuration > 0){

if(runDuration > 0){
isRunning = true;
speed = run;
runDuration--;


}
}
else{
speed = walk;
isRunning = false;
}

if(isRunning == false){
if(runDuration < baseRunDuration){
runDuration++;
}
}
}
}

最佳答案

Obicere 是对的,你要么是冲刺,要么是冲刺和不冲刺交替进行,即半速冲刺。有多种方法可以解决这个问题。我建议仅在您不移动时为冲刺充电。您可以使用 boolean 值来跟踪是否移动了此框架,或者简单地使用 else-if 将中间代码块更改为:

    if(Greenfoot.isKeyDown("w") ){
setLocation(getX(), getY()-speed);
}
else if(Greenfoot.isKeyDown("a")){
move(-speed);
}
else if(Greenfoot.isKeyDown("s")){
setLocation(getX(), getY()+speed);
}
else if(Greenfoot.isKeyDown("d")){
move(+speed);
}
else if(runDuration < baseRunDuration){
runDuration++;
}

注意新的 else 以及最后的子句,它从代码底部向上移动。

关于java - Greenfoot - isKeyDown() 似乎保持其值(value),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43702039/

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