Compare commits

...

2 Commits

Author SHA1 Message Date
c5d00cdfc2 collision with top and bottom of tiles 2023-10-05 10:52:44 +02:00
40e00559c6 new jump method 2023-10-05 10:52:14 +02:00

View File

@ -2,6 +2,8 @@
//- Start Screen
//- Level Editor (click with mouse spawns or deletes tiles)
// - Hotkey to slide the window right and left
//- Movement berechnen mit move = gravitation - speed
// - Jump als Zahl, die langsam kleiner wird
// jumping related
float speed = 20;
@ -11,13 +13,13 @@ float jumpcooldown = 12;
// for moving x-axis (mostly depracted)
// But dont delete yet!!
PVector movement = new PVector(0,0);
PVector direction = new PVector(0,0);
PVector pos = new PVector(220, 50);
int playerRadius = 25;
float actualPos;
PVector tilesize = new PVector(50, 50);
void setup() {
size(800,800);
@ -36,8 +38,8 @@ void draw() {
// noFill();
menu();
// play();
// menu();
play();
helper();
}
@ -78,9 +80,9 @@ void play() {
rect(pos.x, pos.y, playerRadius, playerRadius);
baseline();
// jumpToJumpheight();
newJump();
collisionTest();
cooldown();
jumpToJumpheight();
generate_tiles();
@ -90,12 +92,12 @@ void play() {
// This is basically the Level file:
// It consists out of an array, that spawns tiles
// It is also checked in collisionTest()
int[] tiles_x = { 300, 50, 600 };
int[] tiles_y = { 500, 50, 600 };
int[] tiles_x = { 300, 50, 600, 50};
int[] tiles_y = { 500, 50, 600, 200 };
void generate_tiles() {
for (int i = 0; i < tiles_x.length; i++ ) {
rect(tiles_x[i], tiles_y[i], 50, 50);
rect(tiles_x[i], tiles_y[i], tilesize.x, tilesize.y);
}
}
// TODO Collision erweitern wie in https://happycoding.io/tutorials/processing/collision-detection
@ -104,10 +106,13 @@ void collisionTest() {
if ( pos.y > baseline_y - playerRadius ) {
pos.set(pos.x, baseline_y - playerRadius);
}
// Collision with all the tiles top site
// Collision with all the tiles bottom site
for (int i = 0; i < tiles_x.length; i++) {
if ((pos.x > tiles_x[i]-25 && pos.x < tiles_x[i]+25) && pos.y < tiles_y[i] - playerRadius) {
pos.set(pos.x, tiles_y[i] - playerRadius);
if ((pos.x > tiles_x[i] - tilesize.x/2 && pos.x < tiles_x[i]+tilesize.x/2) && (pos.y < tiles_y[i] + tilesize.y/2 && pos.y > tiles_y[i] - tilesize.y/2)) {
pos.set(pos.x, tiles_y[i] + tilesize.y/2);
}
if ((pos.x > tiles_x[i] - tilesize.x/2 && pos.x < tiles_x[i]+tilesize.x/2) && (pos.y < tiles_y[i] + tilesize.y/2 && pos.y > tiles_y[i] -tilesize.y/2 - playerRadius)) {
pos.set(pos.x, tiles_y[i] - tilesize.y/2 - 20);
}
}
}
@ -138,12 +143,17 @@ void jumpToJumpheight() {
jumpheight = 0;
}
}
// count down jumping cooldown
void cooldown() {
if (jumpcooldown > 0) {
jumpcooldown = jumpcooldown-1;
float movement;
float jumpspeed;
void newJump() {
movement = gravitation - jumpspeed;
pos.set(pos.x, pos.y + movement);
if (jumpspeed > 0) {
jumpspeed--;
}
}
// actions for moving
void keyPressed() {
if (key == CODED)
@ -160,10 +170,10 @@ void keyPressed() {
pos.x = pos.x + direction.x * speed;
//}
}
if (keyCode == UP && jumpcooldown == 0)
if (keyCode == UP)
{
//if (directionY<0) {
jumpheight += 400;
jumpspeed =+ 25;
//}
}
// else if (keyCode == DOWN)