Prevent objects on player's head from stopping jumping
This commit is contained in:
parent
b8fd8e9fd9
commit
a487a3c817
|
@ -212,6 +212,7 @@ void playerHandleCollision(struct Player* player) {
|
||||||
}
|
}
|
||||||
|
|
||||||
float prevY = player->body.transform.position.y;
|
float prevY = player->body.transform.position.y;
|
||||||
|
float prevVelY = player->body.velocity.y;
|
||||||
|
|
||||||
if (offset != 0.0f) {
|
if (offset != 0.0f) {
|
||||||
vector3AddScaled(
|
vector3AddScaled(
|
||||||
|
@ -222,16 +223,17 @@ void playerHandleCollision(struct Player* player) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (collisionObjectIsGrabbable(contact->shapeA) || collisionObjectIsGrabbable(contact->shapeB)) {
|
|
||||||
player->body.transform.position.y = MAX(player->body.transform.position.y, prevY);
|
|
||||||
}
|
|
||||||
|
|
||||||
float relativeVelocity = vector3Dot(&contact->normal, &player->body.velocity);
|
float relativeVelocity = vector3Dot(&contact->normal, &player->body.velocity);
|
||||||
|
|
||||||
if ((contact->shapeA == &player->collisionObject) == (relativeVelocity > 0.0f)) {
|
if ((contact->shapeA == &player->collisionObject) == (relativeVelocity > 0.0f)) {
|
||||||
vector3ProjectPlane(&player->body.velocity, &contact->normal, &player->body.velocity);
|
vector3ProjectPlane(&player->body.velocity, &contact->normal, &player->body.velocity);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (collisionObjectIsGrabbable(contact->shapeA) || collisionObjectIsGrabbable(contact->shapeB)) {
|
||||||
|
player->body.transform.position.y = MAX(player->body.transform.position.y, prevY);
|
||||||
|
player->body.velocity.y = MAX(player->body.velocity.y, prevVelY);
|
||||||
|
}
|
||||||
|
|
||||||
if (((isColliderForBall(contact->shapeA) || isColliderForBall(contact->shapeB)) && !playerIsDead(player))) {
|
if (((isColliderForBall(contact->shapeA) || isColliderForBall(contact->shapeB)) && !playerIsDead(player))) {
|
||||||
playerKill(player, 0);
|
playerKill(player, 0);
|
||||||
soundPlayerPlay(soundsBallKill, 1.0f, 1.0f, NULL, NULL);
|
soundPlayerPlay(soundsBallKill, 1.0f, 1.0f, NULL, NULL);
|
||||||
|
|
Loading…
Reference in a new issue