我想使与一些精灵的运动与键盘的这种互动,我被困在两种情况。 1)角色移动不会根据动画本身进行(它只在动画已经过一秒钟左右后才开始移动)。我真正想要做的是移动时没有因为这个问题而得到的“初始加速感觉” 2)我无法想出一种方法来让角色面对当键时应该面对的位置发行了。我会在这里发布的代码,但由于它需要的图像才能正常工作,如果你想看看是不是这么小我在这个环节提供一个skecth:https://www.openprocessing.org/sketch/439572雪碧平滑的运动,并根据运动面对的位置
PImage[] reverseRun = new PImage [16];
PImage[] zeroArray = new PImage [16];
void setup(){
size(800,600);
//Right Facing
for(int i = 0; i < zeroArray.length; i++){
zeroArray[i] = loadImage (i + ".png");
zeroArray[i].resize(155,155);
}
//Left Facing
for(int z = 0; z < reverseRun.length; z++){
reverseRun[z] = loadImage ("mirror" + z + ".png");
reverseRun[z].resize(155,155);
}
}
void draw(){
frameRate(15);
background(255);
imageMode(CENTER);
if(x > width+10){
x = 0;
} else if (x < - 10){
x = width;}
if (i >= zeroArray.length){
i = 3;} //looping to generate constant motiion
if (z >= reverseRun.length){
z = 3;} //looping to generate constant motiion
if (isRight) {
image(zeroArray[i], x, 300);
i++;
} //going through the images at the array
else if (isLeft) {
image(reverseRun[z],x,300);
z++;
} going through the images at the array
else if(!isRight){
image(zeroArray[i], x, 300);
i = 0; } //"stoped" sprite
}
}
//movement
float x = 300;
float y = 300;
float i = 0;
float z = 0;
float speed = 25;
boolean isLeft, isRight, isUp, isDown;
void keyPressed() {
setMove(keyCode, true);
if (isLeft){
x -= speed;
}
if(isRight){
x += speed;
}
}
void keyReleased() {
setMove(keyCode, false);
}
boolean setMove(int k, boolean b) {
switch (k) {
case UP:
return isUp = b;
case DOWN:
return isDown = b;
case LEFT:
return isLeft = b;
case RIGHT:
return isRight = b;
default:
return b; }
}
再次感谢凯文工人,你救了我的一天。顺便说一句,你的网站真棒,我会用它来研究更多。 –