Easy Character Movement 2
A feature-rich, highly customizable, general purpose (not game-genre tied) kinematic character controller.
Easy Character Movement 2 (ECM2) is a comprehensive set of components crafted to facilitate seamless character movement in both 3D and 2.5D environments.
The primary objective of ECM2 is to simplify the process of maneuvering game characters, empowering developers to construct game mechanics effortlessly on this foundation.
At the core of ECM2 is the CharacterMovement component, a robust and feature-rich kinematic character controller (aka motor). This component serves as a direct replacement for Unity's built-in Character Controller, employing a similar operational methodology (i.e. Move method) but with many features and advantages over it.
Central to the ECM2 system is the Character class. This utilizes the CharacterMovement component as its character controller / motor, incorporating common modes of movement for characters, such as walking, falling, flying, swimming or any custom mode you may create. It serves as a highly customizable foundation for all your game avatars, whether they are controlled by players or AI.
WHAT'S NEW?
Version 1.4.0 constitutes a comprehensive package revision, introducing significant changes that may impact compatibility with previous versions.
It is advisable to import it into a clean project before applying the update to your main environment.
One of its main features is that now the Character class can be extended through composition without the need to inherit directly from the Character class, whether through scripts or visual scripting.
* Networking examples are currently unavailable in version 1.4.0 as they are undergoing porting to accommodate recent changes in network libraries. Rest assured that these examples will be incorporated in the upcoming update. We appreciate your patience and understanding.
FEATURES
- Kinematic character controller.
- Extensive documentation, and fully commented readable source code included.
- Work the Unity's way, simply call its Move method, just like Unity' Character Controller.
- Robust ground detection based on real surface normal.
- Slope Limit Override lets you define walkable areas per-face or even per-object.
- Configurable walkable area (perchOffset) lets you define the character's 'feet' radius.
- Capsule-based with Flat Base for Ground Checks option. This avoids the situation where characters slowly lower off the side of a ledge.
- Ground constraint, prevent the character's being launched off ramps.
- Configurable Plane Constraint so movement along the locked axis is not possible.
- Auto-stepping preserving character's momentum (e.g. its stride).
- User-defined gravity and up vector for mario galaxy like effects.
- Physics interactions.
- Character vs Character interactions.
- First-class, transparent (without further steps needed by you) platforms support, be it animated, scripted, or physics based.
- Collision and Grounding events.
- Network friendly. Full control over the update and simulation timestep.
- Flexible and customizable behavior through callbacks.
- Fully configurable friction based movement including water buoyancy!
- Uses Unity New Input System as its default input (but not limited to).
- Different movement modes and states, like walking, falling, unlimited variable height jump, crouching, sprinting, flying, swimming, etc.
- Full control over how a character is affected (or not) by external forces, platform velocity, platform movement and / or rotation, push other rigidbodies and or characters.
- Character actions events.
- Extensive and configurable collision filtering.
- 40+ examples including custom input actions, cinemachine integration, first person, third person, character events, bouncers, fly, swim, dash, slide, ladders, and much more!
- Developed with extensibility in mind, can be used as it is or extended through inheritance or composition.
- Physics Volumes, to easily handle water, falling zones, etc. with configurable properties.
- Root motion support.
- Simple to use but complete API.
- Easy integration into existing projects.
- Fully commented C# source code. Clear, readable and easy to extend.
- Garbage-Collector friendly, no GC allocations.
INSTALLATION
* Please remove previous versions folders from your unity project before importing this update.
ECM2 includes Cinemachine based examples, this are distributed as a .unitypackage, so before unpack this, please make sure to install the Cinemachine package into your project.
FAQ
Do I have to use new input system?
No, ECM2 no longer depends on the new input system. Its Character class is now input-agnostic.
Can I use URP/HDRP with ECM2?
Yes, ECM2 doesn’t do any rendering, it’ll work with any render pipeline. The demos are made using the Standard Render Pipeline (built-in), as it’s still the only stable one, and the most common denominator, but you can use any RP you prefer.
Technical details
Important note on package dependencies
ECM2 does not require any external package, however its Demos and Examples requires Cinemachine package to work.
Please make sure to install the Cinemachine package into your project when importing demos and examples.