我正在开发一个使用Javascript处理的迷你平台游戏,比如马里奥。
我正在用箭头或WASD移动我的角色,我想知道在镜像角色/图像时是否有scale(-1,1);
的替代品。 (它默认情况下向右看,或者按D键时,按A键向左翻转。)
如果这是最好或最简单的方式,我也想知道如何使比例方法不影响所有其他图像,因为我想放置一些平台但是有规模当角色移动时,他们一直在翻转......
我也正在使用Processing和Javascript收听与精灵/声音使用相关的任何信息。我尝试了一些库,但只有当我切换到Java模式时才能工作。
提前致谢, MARAL。
由于之前的帖子,我使用了比例镜像。 Processing mirror image over x axis?
“dreta”为Right,“esquerre”为Left,两者均由WASD或Keys控制,将每个布尔值更改为true,释放为false。 我没有发布所有代码,但这是我想要解决的基本动作。
void draw() {
pushMatrix();
if (iniciar == true) {
inici();
}
if (dreta == true && esquerre != true) {
movDret(backgroundimg[2]);
}
if (esquerre == true && dreta != true) {
movEsquerre(backgroundimg[2]);
}
}
void platformndBackground(PImage b){
background(b);
popMatrix();
image(imgGrass[0], 50, 50);
if (esquerre == true) {
scale(-1,1);
}
}
void inici() {
movDret(backgroundimg[2]);
iniciar = false;
}
void movDret(PImage b) {
//Colisió extrem Esquerre.
if (posicio > 1024-imgJugador[5].width) {
posicio = posicio - imgJugador[tipusMoviment].width/2;
movEsquerre(backgroundimg[2]);
} else {
bothMoviments(b);
image(imgJugador[tipusMoviment], posicio, posicioSalt);
posicio = posicio + 3;
}
}
void movEsquerre(PImage b) {
//Colisió extrem Dret.
if (posicio < 0) {
posicio = posicio + imgJugador[tipusMoviment].width/2;
popMatrix();
movDret(backgroundimg[2]);
} else {
bothMoviments(b);
image(imgJugador[tipusMoviment], ((-imgJugador[tipusMoviment].width)-posicio), posicioSalt);
posicio = posicio - 3;
}
}
void bothMoviments(PImage b) {
if (esquerre == true) {
scale(-1, 1);
}else{
popMatrix();
}
if (tipusMoviment < imgJugador.length-1) {
tipusMoviment++;
} else {
tipusMoviment = 5;
}
platformndBackground(b);
}
答案 0 :(得分:1)
如果您不想镜像您的精灵,您可以使用两组精灵:一组用于向右,一组用于向左。
但是如果您使用scale()函数来镜像精灵,则需要使用pushMatrix()
和popMatrix()
,这样缩放不会影响其他所有精灵。像这样:
public void draw(){
background(0);
pushMatrix(); //save current "default" matrix
scale(-1,1); //scale the matrix
image(img,-img.width,img.height); //draw the image using the scaled matrix
popMatrix(); //go back to the saved "default" matrix
//draw non-mirrored sprites
image(img2,img2.width,img2.height);
}
更多信息可在参考here中找到。