Avoid ground collision with Bullet

后端 未结 2 362
一生所求
一生所求 2020-12-13 17:14

I\'m trying to use Bullet physic engine to create a 3D world.

I\'ve got my character with a Capsule shape on his body and my ground his made of some static blocs sti

2条回答
  •  隐瞒了意图╮
    2020-12-13 17:40

    What I did to overcome this issue is the following:

    Instead of have the capsule slide on the ground, I had a dynamic capsule ride on top of a spring. I implemented the spring as several ray casts originating from bottom of the capsule. The length of the spring was like half a meter or less and it would pull and push the capsule to and from the ground. The grip/pull is important so the character wouldn't jump unexpectedly. The springs stiffness controls how much bobbing you have.

    This had the following effects

    • No unwanted collision with edge of geometry on the floor, since the capsule floats
    • Walking up stairs and slopes implemented implicitly. The spring would just "step" onto the stair's step and push the character capsule up.
    • Implementation of jumping was just matter of releasing the grip on the ground the spring had and giving the body an impulse.
    • A landing character after a jump or fall automatically displayed "knee-bending" as you would expect
    • Pleasant smoothing of vertical movements in general. Like on elevator platforms etc.
    • Due to the grip/pull to the ground, even when running downhill the character would not start to "fly" as you experience in some games (I find that annoying typically).
    • Ducking character = decrease the length of the spring and/or the capsule.
    • Sliding downhill? You can fully control it by checking the angles of the floor area the ray cast of the spring hit.

    I had to play around a lot with the stiffness of the spring, the length of the spring, the length of the grip etc. but in the end I was very happy about how simple yet well this worked.

提交回复
热议问题