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 prevVelY = player->body.velocity.y;
|
||||
|
||||
if (offset != 0.0f) {
|
||||
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);
|
||||
|
||||
if ((contact->shapeA == &player->collisionObject) == (relativeVelocity > 0.0f)) {
|
||||
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))) {
|
||||
playerKill(player, 0);
|
||||
soundPlayerPlay(soundsBallKill, 1.0f, 1.0f, NULL, NULL);
|
||||
|
|
Loading…
Reference in a new issue