这非常重要请帮忙。我想在这段代码中添加以下功能: 我创建的玩家可以停留在我创建的阶段的顶部,并且无法通过它。如果玩家触及熔岩,游戏就会停止并写上“你输了”。如果玩家来到我按下熔岩时创建的终端平台,“你赢了!!”写下来。让我创建的阶段在 y 轴上上下移动。
< PImage imgLava,imgGrass, imgStone, imgP1;
//Player p;
float playerX = 0;
float playerY = 0;
float playerZ = 0;
float jumpHeight = 0;
float jumpSpeed = 0;
boolean isJumping = false;
boolean gameLost = false;
boolean gameWon = false;
void setup()
{
fullScreen(P3D);
camZ = (height/2) / tan((PI*60.0)/360.0);
noStroke();
textureMode(NORMAL);
imgLava = loadImage("lava.jpeg");
imgGrass = loadImage("grass.jpg");
imgStone= loadImage("stone.png");
imgP1= loadImage("p1.png");
// p = new Player();
}
float camZ = 0;
void draw()
{
background(0);
/*camera(width/2, height/2, camZ, //camx, camy, camz
width/2, height/2, 0, //lookx, looky, lookz
0, 1, 0 //eyex, eyey, eyez
);*/
camera(0, 0, camZ,
0, 0, 0,
0, 1, 0);
lights();
rotateX(rotX + distY);
rotateY(rotY + distX);
scale(20);
// p.update();
// p.display();
drawLava();
drawPlatform();
drawStage();
drawEndPlatform();
drawPlayer();
if (keyPressed) {
if (keyCode == UP)
camZ -= 5;
if (keyCode == DOWN)
camZ += 5;
if (key == 'a' || key == 'A')
playerX -= 0.1;
if (key == 'd' || key == 'D')
playerX += 0.1;
if (key == 'w' || key == 'W')
playerZ -= 0.1;
if (key == 's' || key == 'S')
playerZ += 0.1;
if (key == ' ')
jump();
}
if (isJumping) {
performJump();
}
}
void drawLava()
{
int w = 1;
int h = 1;
beginShape(QUAD);
texture(imgLava);
vertex(-5, 1.0000, -54, 0, 0);
vertex(5, 1.0000, -54, w, 0);
vertex(5, 1.0000, 0, w, h);
vertex(-5, 1.0000, 0, 0, h);
endShape();
if (playerY <= -height / 2 && playerZ <= 0 && playerZ >= -200) {
gameLost = true;
}
}
void drawPlatform()
{
int w = 1;
int h = 1;
beginShape(QUAD);
texture(imgGrass);
vertex(-2, 0.999, 0, 0, 0);
vertex(2, 0.999, 0, w, 0);
vertex(2, 0.999, -5, w, h);
vertex(-2, 0.999, -5, 0, h);
endShape();
}
int w=1,h=1;
void drawStage()
{
beginShape(QUADS);
texture(imgStone);
//+Z face
vertex(-1, -1, -10, 0, 0); //upper left corner
vertex(1, -1, -10, w, 0); //upper right corner
vertex(1, 0.998, -10, w, h); //bottom right corner
vertex(-1, 0.998, -10, 0, h); //bottom left corner
//-Z face
vertex(-1, -1, -15, 0, 0); //upper left corner
vertex(1, -1, -15, w, 0); //upper right corner
vertex(1, 0.998, -15, w, h); //bottom right corner
vertex(-1, 0.998, -15, 0, h); //bottom left corner
//+X face
vertex(1, -1, -10, 0, 0); //upper left corner
vertex(1, -1, -15, w, 0);
vertex(1, 0.998, -15, w, h);
vertex(1, 0.998, -10, 0, h);
//-X face
vertex(-1, -1, -10, 0, 0); //upper left corner
vertex(-1, -1, -15, w, 0);
vertex(-1, 0.998, -15, w, h);
vertex(-1, 0.998, -10, 0, h);
//-Y face
vertex(-1, -1, -10, 0, 0);
vertex(1, -1, -10, w, 0);
vertex(1, -1, -15, w, h);
vertex(-1, -1, -15, 0, h);
//+Y face
vertex(-1, 0.998, -10, 0, 0);
vertex(1, 0.998, -10, w, 0);
vertex(1, 0.998, -15, w, h);
vertex(-1, 0.998, -15, 0, h);
endShape();
beginShape(QUADS);
texture(imgStone);
//+Z face
vertex(-1, -1, -20, 0, 0); //upper left corner
vertex(1, -1, -20 ,w, 0); //upper right corner
vertex(1, 0.998, -20, w, h); //bottom right corner
vertex(-1, 0.998, -20, 0, h); //bottom left corner
//-Z face
vertex(-1, -1, -25, 0, 0); //upper left corner
vertex(1, -1, -25, w, 0); //upper right corner
vertex(1, 0.998, -25, w, h); //bottom right corner
vertex(-1, 0.998, -25, 0, h); //bottom left corner
//+X face
vertex(1, -1, -20, 0, 0); //upper left corner
vertex(1, -1, -25, w, 0);
vertex(1, 0.998, -25, w, h);
vertex(1, 0.998, -20, 0, h);
//-X face
vertex(-1, -1, -20, 0, 0); //upper left corner
vertex(-1, -1, -25, w, 0);
vertex(-1, 0.998, -25, w, h);
vertex(-1, 0.998, -20, 0, h);
//-Y face
vertex(-1, -1, -20, 0, 0);
vertex(1, -1, -20, w, 0);
vertex(1, -1, -25, w, h);
vertex(-1, -1, -25, 0, h);
//+Y face
vertex(-1, 0.998, -20, 0, 0);
vertex(1, 0.998, -20, w, 0);
vertex(1, 0.998, -25, w, h);
vertex(-1, 0.998, -25, 0, h);
endShape();
beginShape(QUADS);
texture(imgStone);
//+Z face
vertex(-1, -1, -30, 0, 0); //upper left corner
vertex(1, -1, -30 ,w, 0); //upper right corner
vertex(1, 0.998, -30, w, h); //bottom right corner
vertex(-1, 0.998, -30, 0, h); //bottom left corner
//-Z face
vertex(-1, -1, -35, 0, 0); //upper left corner
vertex(1, -1, -35, w, 0); //upper right corner
vertex(1, 0.998, -35, w, h); //bottom right corner
vertex(-1, 0.998, -35, 0, h); //bottom left corner
//+X face
vertex(1, -1, -30, 0, 0); //upper left corner
vertex(1, -1, -35, w, 0);
vertex(1, 0.998, -35, w, h);
vertex(1, 0.998, -30, 0, h);
//-X face
vertex(-1, -1, -30, 0, 0); //upper left corner
vertex(-1, -1, -35, w, 0);
vertex(-1, 0.998, -35, w, h);
vertex(-1, 0.998, -30, 0, h);
//-Y face
vertex(-1, -1, -30, 0, 0);
vertex(1, -1, -30, w, 0);
vertex(1, -1, -35, w, h);
vertex(-1, -1, -35, 0, h);
//+Y face
vertex(-1, 0.998, -30, 0, 0);
vertex(1, 0.998, -30, w, 0);
vertex(1, 0.998, -35, w, h);
vertex(-1, 0.998, -35, 0, h);
endShape();
beginShape(QUADS);
texture(imgStone);
//+Z face
vertex(-1, -1, -40, 0, 0); //upper left corner
vertex(1, -1, -40 ,w, 0); //upper right corner
vertex(1, 0.998, -40, w, h); //bottom right corner
vertex(-1, 0.998, -40, 0, h); //bottom left corner
//-Z face
vertex(-1, -1, -45, 0, 0); //upper left corner
vertex(1, -1, -45, w, 0); //upper right corner
vertex(1, 0.998, -45, w, h); //bottom right corner
vertex(-1, 0.998, -45, 0, h); //bottom left corner
//+X face
vertex(1, -1, -40, 0, 0); //upper left corner
vertex(1, -1, -45, w, 0);
vertex(1, 0.998, -45, w, h);
vertex(1, 0.998, -40, 0, h);
//-X face
vertex(-1, -1, -40, 0, 0); //upper left corner
vertex(-1, -1, -45, w, 0);
vertex(-1, 0.998, -45, w, h);
vertex(-1, 0.998, -40, 0, h);
//-Y face
vertex(-1, -1, -40, 0, 0);
vertex(1, -1, -40, w, 0);
vertex(1, -1, -45, w, h);
vertex(-1, -1, -45, 0, h);
//+Y face
vertex(-1, 0.998, -40, 0, 0);
vertex(1, 0.998, -40, w, 0);
vertex(1, 0.998, -45, w, h);
vertex(-1, 0.998, -45, 0, h);
endShape();
}
void drawEndPlatform()
{
int w = 1;
int h = 1;
beginShape(QUAD);
texture(imgGrass);
vertex(-2, 0.999, -49, 0, 0);
vertex(2, 0.999, -49, w, 0);
vertex(2, 0.999, -54, w, h);
vertex(-2, 0.999, -54, 0, h);
endShape();
if (playerY <= -height / 2 && playerZ <= -50 && playerZ >= -55) {
gameWon = true;
}
}
void drawPlayer() {
translate(playerX, playerY + jumpHeight, playerZ);
//if (isJumping) {
// jumpHeight += jumpSpeed;
// jumpSpeed -= 0.01;
// if (jumpHeight <= 0) {
// isJumping = false;
// jumpHeight = 0;
// jumpSpeed = 0.2;
// }
// }
texture(imgP1);
//+Z face
vertex(-0.25, 0.75, -1, 0, 0); //upper left corner
vertex(0.25, 0.75, -1, w, 0); //upper right corner
vertex(0.25, 0.998, -1, w, h); //bottom right corner
vertex(-0.25, 0.998, -1, 0, h); //bottom left corner
//-Z face
vertex(-0.25, 0.75, -1.5, 0, 0); //upper left corner
vertex(0.25, 0.75, -1.5, w, 0); //upper right corner
vertex(0.25, 0.998, -1.5, w, h); //bottom right corner
vertex(-0.25, 0.998, -1.5, 0, h); //bottom left corner
//+X face
vertex(0.25, 0.75, -1.0, 0, 0); //upper left corner
vertex(0.25, 0.75, -1.5, w, 0);
vertex(0.25, 0.998, -1.5, w, h);
vertex(0.25, 0.998, -1.0, 0, h);
//-X face
vertex(-0.25, 0.75, -1.0, 0, 0); //upper left corner
vertex(-0.25, 0.75, -1.5, w, 0);
vertex(-0.25, 0.998, -1.5, w, h);
vertex(-0.25, 0.998, -1.0, 0, h);
//-Y face
vertex(-0.25, 0.75, -1.0, 0, 0);
vertex(0.25, 0.75, -1.0, w, 0);
vertex(0.25, 0.75, -1.5, w, h);
vertex(-0.25, 0.75, -1.5, 0, h);
//+Y face
vertex(-0.25, 0.998, -1.0, 0, 0);
vertex(0.25, 0.998, -1.0, w, 0);
vertex(0.25, 0.998, -1.5, w, h);
vertex(-0.25, 0.998, -1.5, 0, h);
endShape();
}
void jump() {
if (!isJumping) {
isJumping = true;
jumpSpeed = -0.6;
}
}
float rotX = 0, rotY = 0;
float lastX, lastY;
float distX, distY;
void performJump() {
playerY += jumpSpeed;
jumpSpeed += 0.02;
if (playerY >= 0) {
playerY = 0;
jumpSpeed = 0;
isJumping = false;
}
}
void keyPressed() {
if (keyCode == UP)
camZ -= 5;
if (keyCode == DOWN)
camZ += 5;
if (key == 'a' || key == 'A')
playerX -= 0.1;
if (key == 'd' || key == 'D')
playerX += 0.1;
if (key == 'w' || key == 'W')
playerZ -= 0.1;
if (key == 's' || key == 'S')
playerZ += 0.1;
if (key == ' ')
jump();
}
void keyReleased() {
if (keyCode == UP)
camZ += 5;
if (keyCode == DOWN)
camZ -= 5;
if (key == 'a' || key == 'A')
playerX += 0.1;
if (key == 'd' || key == 'D')
playerX -= 0.1;
if (key == 'w' || key == 'W')
playerZ += 0.1;
if (key == 's' || key == 'S')
playerZ -= 0.1;
}
void mouseDragged() {
float speed = 0.01;
float distX = (pmouseX - mouseX) * speed;
float distY = (pmouseY - mouseY) * speed;
rotX += distY;
rotY -= distX;
}
void mousePressed() {
float speed = 0.01;
distX = 0;
distY = 0;
float distX = (pmouseX - mouseX) * speed;
float distY = (pmouseY - mouseY) * speed;
}
void mouseReleased() {
distX = 0;
distY = 0;
}
Hi guys, i have a project in Processing. i am trying to create basic platform game but i could not do it. Can someone help? In this code, I am trying to create a player and this player should go left and right and can jump with space. The blocks I call "stages" should move up and down along the y-axis. The player object I created should also jump on these blocks. If the player touches Lava, the game should stop and "You Failed" should be displayed on the screen. If he successfully passes all 5 blocks and touches the last platform, "Congratulations, You Win!!" should write. Thank you for your help in advance.