Я создаю простую платформерную игру, использующую обработку, и мне нужна помощь, чтобы выяснить способ взаимодействия персонажа моего игрока с платформами, в частности, чтобы они стояли на верху платформ.
Я пытался установить скорость игрока равной нулю, когда он взаимодействует с платформой, но это создает проблему при попытке подняться на вершину платформы, где игрок будет опускаться, а не оставаться на вершине.
public void setup() {
background=loadImage("Sprites/Test Background-1.png.png");
playerSprite= new AnimatedSprite("Idle animation", 8);
blocks[0]= new BlockCollision();
blocks[0].Sprite = loadImage("Sprites/Platform Small-1.png.png" );
blocks[0].x = 250;
blocks[0].y = 250;
blocks[0].width = 64;
blocks[0].height= 64;
blocks[1]= new BlockCollision();
blocks[1].Sprite = loadImage("Sprites/Platform Small-1.png.png" );
blocks[1].x = 0;
blocks[1].y = 0;
blocks[1].width = 64;
blocks[1].height = 64;
blocks[2]= new BlockCollision();
blocks[2].Sprite = loadImage("Sprites/Platform Small-1.png.png");
blocks[2].x = 300;
blocks[2].y = 400;
blocks[2].width = 64;
blocks[2].height = 64;
}
public void settings() {
size (500, 500);
}
public void draw() {
background(background);
if(grounded==false){
playerVelocity.y += 1;
}
playerPosition.x +=
playerVelocity.x;
playerPosition.y +=
playerVelocity.y;
if (playerPosition.y > 468) {
playerPosition.y = 468;
playerVelocity.y = 0;
jumpAmount=0;
}
playerSprite.animate
(playerPosition.x, playerPosition.y);
//checks for if it touches any side of the platform
if(playerPosition.y+ playerDimensions>= blocks[0].y
&& playerPosition.x+ blockDimensions>=blocks[0].x
&&playerPosition.y<=blocks[0].y+blockDimensions
&& playerPosition.x<=blocks[0].x){
//sets velocity to zero to ensure that any other interaction with the platform works
playerVelocity.x=0;
playerVelocity.y=0;
if(playerPosition.y+ blockDimensions<=blocks[0].y){
grounded=true;
}
else grounded = false;
}
image(blocks[0].Sprite, blocks[0].x, blocks[0].y);
image(blocks[1].Sprite,blocks[1].x,blocks[1].y);
image(blocks[2].Sprite,blocks[2].x,blocks[2].y);
}
Предполагается, что игрок все еще находится на платформе, но вместо этого он проваливается.