RVOController.ForceSetVelocity vs RVO Obstacle?


#1

First off, thank you for creating this great library. I’m finding it immensely useful.

Can you please tell me the difference (if any) between having a RVOController that calls ForceSetVelocity() versus using an RVO Obstacle? Are they suited to different situations? From reading the documentation, they seem similar.

I ask because the game I am working on involves both player-controlled and non-player-controlled characters who manually move around the map using the Unity CharacterController, as well as a flock of characters who navigate around the map using this package. The flock should know to move around the manually moved characters. I am wondering whether it would be better for these manually moved characters to each have an RVOController attached which has ForceSetVelocity() called on it repeatedly, or if it’d be better to just attach an RVO Obstacle to each them.

Thanks!


#2

Hi

They will indeed behave very similarly. However using an RVOController with ForceSetVelocity (or just assigning the ‘velocity’ property in 4.1+) will make the agents be aware that the object is moving. RVO obstacles are always seen as being stationary.
Generally using an RVOController with ForceSetVelocity should also be faster both due to circular shapes being a lot easier to handle (math-wise) than polygons and due to some internal optimizations for those use cases.