Java 使用keypressed()方法的图像更改问题

Java 使用keypressed()方法的图像更改问题,java,processing,Java,Processing,我正在尝试做一个涂鸦跳跃游戏,目前我找不到一种方法使静止图像在落地后变为腿部图像,然后再变回静止。这对一方来说是这样的,但不是对双方都这样。我尝试过使用嵌套if,但它不会检测到按钮按下。代码如下: 游戏对象游戏; 粉刺涂鸦; 无效设置(){ 尺寸(640800); 光滑(4); 帧率(10); doodle=loadImage(“https://i.imgur.com/ytwebph.png"); 游戏=新涂鸦(新PVector(宽度/2,高度涂鸦。高度*2),涂鸦); 游戏。设置宽度和高度(新

我正在尝试做一个涂鸦跳跃游戏,目前我找不到一种方法使静止图像在落地后变为腿部图像,然后再变回静止。这对一方来说是这样的,但不是对双方都这样。我尝试过使用嵌套if,但它不会检测到按钮按下。代码如下:

游戏对象游戏;
粉刺涂鸦;
无效设置(){
尺寸(640800);
光滑(4);
帧率(10);
doodle=loadImage(“https://i.imgur.com/ytwebph.png");
游戏=新涂鸦(新PVector(宽度/2,高度涂鸦。高度*2),涂鸦);
游戏。设置宽度和高度(新的PVector(宽度,高度));
}
作废提款(){
背景(200);
game.display();
游戏。移动();
}
按下void键(){
game.setMove(keyCode,true);
}
void keyReleased(){
game.setMove(keyCode,false);
}
保护类涂鸦扩展游戏对象{
保护浮子速度、重力、时间;
保护浮地位置;
受保护的整型面=0;//0=右;1=左
受保护的涂鸦(PVector位置,PImage图片){
超级(位置、图片);
重力=20;
时间=0.4;
速度y=35*重力*时间;
超级设定速度(10);
地面位置=位置.y-图片高度;
}
公开作废动议(){
如果(isRight | | position.y地面位置){
如果(面向==0){
this.picture=doodleImg[1];
}else if(朝向==1){
this.picture=doodleImg[3];
}
位置y=地面位置;
速度y=35;
}
}
}
公共类游戏对象{
公共PVector位置、宽度和高度;
公共int大小、速度;
公共图片;
公共布尔值为左,为右;
公共PImage[]doodleImg=新PImage[6];
公共游戏对象(PVector位置、PImage图片){
这个位置=位置;
这个图片=图片;
宽度和高度=新的PVector(0,0);
速度=1;
//0,1右;2,3左;4,5发;
doodleImg[0]=加载图像(“https://i.imgur.com/ytwebph.png");
doodleImg[1]=加载图像(“https://i.imgur.com/Y0cFSFK.png");
doodleImg[2]=加载图像(“https://i.imgur.com/FL3IhU5.png");
doodleImg[3]=加载图像(“https://i.imgur.com/YuqWihj.png");
}
公开作废动议(){
位置x=0;
}
公共空间显示(){
图像(图片,位置x,位置y);
}
公共布尔setMove(int-keycode,boolean-isPressed){
开关(钥匙代码){
案例左:
return isLeft=isPressed;
案例权利:
return isRight=isPressed;
违约:
返回显示;
}
}
受保护的PVector getWidthAndHeight(){
返回宽度和高度;
}
无效设置速度(内部速度){
速度=速度;
}
公共空隙设置宽度和高度(PVector新宽度和高度){
宽度和高度=新的宽度和高度;
}
}

首先根据
islight
isLeft
设置
facing
状态:

if(isRight){
正面=0;
}else if(isLeft){
面向=1;
}
根据
朝向的状态和垂直位置
位置y
设置图像:

if (position.y < groundPosition) {
    this.picture = doodleImg[facing==0 ? 0 : 2];
} else {
    this.picture = doodleImg[facing==0 ? 1 : 3];
}
if(位置y

公共作废移动(){
如果(isRight){
正面=0;
}else if(isLeft){
面向=1;
}
如果(位置y<接地位置){
this.picture=doodleImg[face==0?0:2];
}否则{
this.picture=doodleImg[facing==0?1:3];
}
位置x=位置x+速度*(int(isRight)-int(isLeft));
//边境管制
if(position.x+picture.width/2=this.getWidthAndHeight().x){
位置x=0-picture.width/2;
}
//跳跃
速度y-=重力*时间;
位置y-=速度y*时间;
如果(位置y>地面位置){
位置y=地面位置;
速度y=35;
}
}

首先根据
islight
isLeft
设置
facing
状态:

if(isRight){
正面=0;
}else if(isLeft){
面向=1;
}
根据
朝向的状态和垂直位置
位置y
设置图像:

if (position.y < groundPosition) {
    this.picture = doodleImg[facing==0 ? 0 : 2];
} else {
    this.picture = doodleImg[facing==0 ? 1 : 3];
}
if(位置y

公共作废移动(){
如果(isRight){
正面=0;
}else if(isLeft){
面向=1;
}
如果(位置y<接地位置){
this.picture=doodleImg[face==0?0:2];
}否则{
this.picture=doodleImg[facing==0?1:3];
}
位置x=位置x+速度*(int(isRight)-int(isLeft));
//边境管制
if(position.x+picture.width/2=this.getWidthAndHeight().x){
位置x=0-picture.width/2;
}
//跳跃
速度y-=重力*时间;
位置y-=速度y*时间;
如果(位置y>地面位置){
位置y=地面位置;
速度y=35;
}
}