Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
193 stars 9 forks source link

CharacterController not respecting capsule Height after being Grabbed #2898

Closed H3BO3 closed 3 years ago

H3BO3 commented 3 years ago

Describe the bug?

My vehicle system utilizes charactercontroller physics for its operation. When a vehicle is spawned out and flown, it's fine, but once the vehicle is grabbed, it resets the character controller's capsule collider to an arbitrary value, causing vehicles to do this:

2021-08-30 00 11 27

Relevant issues

None.

To Reproduce

Spawn my dropship from my public folder neosrec:///U-H3BO3/R-42a040ff-ddef-498d-b097-1a415e63210e

/H3BO3's FlightPlatform/Example Ships/Dropship

Get into the vehicle immediately, it will fall to the ground and be in a correct position. Exit the vehicle to observe.

Laser-grab the vehicle and let go. Get into the vehicle again. The collider will be way shorter and half the dropship will be in the ground.

Expected behavior

My ships should be able to handle being picked up without something resetting the capsule collider's height.

Log Files

The logs did not contain any relevant exceptions.

Screenshots

2021-08-30 00 37 45

This is the height the default platform got reset to.

How often does it happen?

Always

Does the bug persist after restarting Neos?

Yes

Neos Version Number

2021.8.29.1240

What Platforms does this occur on?

Windows

Link to Reproduction Item/World

No response

Did this work before?

Yes

If it worked before, on which build?

Before 2021.8.25.1127

Additional context

I believe this is due to the SingleShapeCharacterController manager detecting a new active user and setting the capsule to a new height.

If it's any help, my ships have their root referenced into the "HeadReference" field of the CharacterController - This is to enable them to use teleporters.

Grabbing my ships is native to them, so if the carefully-tuned collider heights of my vehicles get changed every time, it's not pretty. It would be nice to have a retroactive fix applied for this - The _Height field in the CharacterController retains the original height, if it's any help.

Reporters

H3BO3#7957

Frooxius commented 3 years ago

It is the SingleShapeCharacterController, it automatically drives it by the user's height when it's under the user. Can you just remove it or disable that behavior?

I could see if there's a way to distinguish when to upgrade it to that component or not, potentially when there's no locomotion module detected. But the behaviors are mainly optimized for actual character control, so that will always take priority

H3BO3 commented 3 years ago

If I remove it I will need to confirm fix, upgrade each of my vehicles, and push a patch note so everyone else who uses my system will be able to fix it too. All of my legacy vehicles can easily be broken without that manual fix, however.

If detecting no locomotion module or some other solution for this is possible, that would be highly preferable.

Frooxius commented 3 years ago

I made some improvements to the upgrade heuristics in 2021.9.1.643, let me know if this helped!

H3BO3 commented 3 years ago

The fix works for all my aircraft, and I've updated my wiki page instructions to suit the new components! Thanks Froox