Character Movement

Character Movement has been developed as a comprehensive alternative to Unity's built-in Character Controller.


It allows for more realistic character behavior, complete customization and robust ground detection following the same workflow (Move) for seamless integration into existing projects.


It can be used for any kind of character (player or AI controlled) and for a wide range of games like, platformer, side scroller, first person, third person, adventure, point and click, and more!


It offers full control over the update and simulation timestep perfectly suitable for tick-based simulations.



* If you are looking for a complete character movement package with Character Movement included, check out Easy Character Movement 2



WHAT'S NEW?


This update add support (examples) for major Unity Networking packages, in particular Photon Fusion, FishNet and Mirror


Where both the Photon Fusion and FishNet implements server authoritative movement with client prediction and reconciliation.




FEATURES


  • Kinematic character controller.
  • Work the Unity's way, simply call its Move function, just like Unity's Character Controller.
  • Cinemachine-based First and Third person examples.
  • 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. Helps the character to maintain walkable ground.
  • Configurable Plane Constraint so movement along the locked axis is not possible.
  • Auto-stepping preserving character's momentum (i.e. Its stride).
  • User-defined gravity and up vector for mario galaxy like effects.
  • Physics interaction.
  • Character vs Character interactions.
  • First-class transparent (without further steps needed by you) platforms support, be it animated, scripted, physics based, or even fully simulated objects like vehicles!
  • Collision and Grounding events.
  • Network friendly. Full control over the update and simulation timestep, perfectly suitable for tick-based simulations.
  • Flexible and customizable behavior through callbacks.
  • Simple to use but complete API.
  • Full source code included.
  • Garbage-Collector friendly, no GC allocations at runtime.


FAQ


What is a character controller ?

A Character Controller allows you to easily do movement constrained by collisions without having to deal with a dynamic rigidbody.


A Character Controller is not affected by forces and will only move when you call the Move function. It will then carry out the movement but be constrained by collisions.


In the past, games did not use a 'real' physics engine like the PhysX SDK (Unity’s underlying physics engine). But they still used a character controller to move a player in a level. These games, such as Quake or even Doom, had a dedicated, customized piece of code to implement collision detection and response, which was often the only piece of physics in the whole game. It actually had little physics, but a lot of carefully tweaked values to provide a good feeling while controlling the player. The particular behavior it implemented is often called the 'collide and slide' algorithm, and it has been 'tweaked for more than a decade'.


The Character Movement is an implementation of such an algorithm, providing a robust and well-known behavior for character control.


Who is this for?

For developers who are familiar with programming and 3D math and want to build their own game mechanics using a comprehensive character controller as their foundation.


For developers who are willing to replace Unity's Character Controller with a robust and feature-rich alternative but following the same Unity's workflow they know and love!


For developers who want to learn how to build common character movement mechanics such as walk, jump, fall, crouch, first person, third person controllers and are already familiar with Unity and programming.


What is the difference between Character Movement and Easy Character Movement 2 ?

Character Movement is a general purpose character controller analogue to Unity's Character Controller aimed at developers who prefer to build their own character movement and game mechanics from scratch using a comprehensive character controller as their foundation.


Easy Character Movement 2 adds a higher-level layer on top of the Character Movement component implementing a highly-featured Character-based classes and is aimed at developers who prefer a more complete character movement system with common movement modes builtin (walk, sprint, jump, fly, swim, etc).


Additionally, ECM2 includes over 40 examples, ranging from using the new input system, custom actions, PlayerInput component, first person, third person, target lock, twin-sick movement, dash, slide, ladders, AI, Cinemachine, Bolt, and many more!


Can I use URP/HDRP?

Yes, Character Movement doesn’t do any rendering, it’ll work with any render pipeline. The demos are made using the Built-in Render Pipeline, as it’s still the most common denominator, but you can use any RP you prefer.



HELP AND SUPPORT


WebGL Demo

Getting Started Guide

User Manual

Walkthrough

API Reference Download

Forum

Email



*Unity Character by Unity Technologies.