1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| if (ya > 0)
{
if (isBlocking(x + xa - width, y + ya, xa, 0)) collide = true;
else if (isBlocking(x + xa + width, y + ya, xa, 0)) collide = true;
else if (isBlocking(x + xa - width, y + ya + 1, xa, ya)) collide = true;
else if (isBlocking(x + xa + width, y + ya + 1, xa, ya)) collide = true;
}
if (ya < 0)
{
if (isBlocking(x + xa, y + ya - height, xa, ya)) collide = true;
else if (collide || isBlocking(x + xa - width, y + ya - height, xa, ya)) collide = true;
else if (collide || isBlocking(x + xa + width, y + ya - height, xa, ya)) collide = true;
}
if (xa > 0)
{
sliding = true;
if (isBlocking(x + xa + width, y + ya - height, xa, ya)) collide = true;
else sliding = false;
if (isBlocking(x + xa + width, y + ya - height / 2, xa, ya)) collide = true;
else sliding = false;
if (isBlocking(x + xa + width, y + ya, xa, ya)) collide = true;
else sliding = false;
}
if (xa < 0)
{
sliding = true;
if (isBlocking(x + xa - width, y + ya - height, xa, ya)) collide = true;
else sliding = false;
if (isBlocking(x + xa - width, y + ya - height / 2, xa, ya)) collide = true;
else sliding = false;
if (isBlocking(x + xa - width, y + ya, xa, ya)) collide = true;
else sliding = false;
}
if (collide)
{
if (xa < 0)
{
x = (int) ((x - width) / 16) * 16 + width;
this.xa = 0;
}
if (xa > 0)
{
x = (int) ((x + width) / 16 + 1) * 16 - width - 1;
this.xa = 0;
}
if (ya < 0)
{
y = (int) ((y - height) / 16) * 16 + height;
jumpTime = 0;
this.ya = 0;
}
if (ya > 0)
{
y = (int) ((y - 1) / 16 + 1) * 16 - 1;
onGround = true;
}
return false;
} |
Partager