Ultimate Character Controller WIP

In version 2.1 you'll be able to set custom scales on your character's transform. While this seems like a standard Unity feature it has to specifically be added when the controller is doing all of the collision detection.

dtxk2x_uuaaj5vs-jpg-large-jpg.340126
Hi, Jusin. I use Nolan as the character, adjust the scale to 0.1, the character's posture will be wrong. Does the character's scale have to be greater than 1?
 
Hi, Jusin. I use Nolan as the character, adjust the scale to 0.1, the character's posture will be wrong. Does the character's scale have to be greater than 1?
You can have a smaller scale but by setting such a small scale you'll need to make other adjustments such as to the IK foot offset and capsule collider positioner offset.
 
First beta for the Agility Pack is out! More info here:

 
The next UCC open will be general quality of life improvements that I wasn't able to make earlier because of the 2.1/Agility Pack release. The first thing that I've added is the ability to move with an object. The object must update within fixed update in order for it to be smooth but moving objects should be updated at this time anyway. Here's a gif of the character moving on an object that is updated outside of the Kinematic Object Manager loop:

giphy.gif


This platform has the following code:

Code:
public class MyPlatform : MonoBehaviour {

    public void FixedUpdate()
    {
        transform.position += new Vector3(Time.fixedDeltaTime, 0, 0);
    }
}

No IKinematicObjects required! There is also a new ability that goes along with this that allows you to specify which object the character should move with.
 
The next version of the character controller will work with the lightweight render pipeline:

1585
 
The next UCC open will be general quality of life improvements that I wasn't able to make earlier because of the 2.1/Agility Pack release. The first thing that I've added is the ability to move with an object. The object must update within fixed update in order for it to be smooth but moving objects should be updated at this time anyway. Here's a gif of the character moving on an object that is updated outside of the Kinematic Object Manager loop:

giphy.gif


This platform has the following code:

Code:
public class MyPlatform : MonoBehaviour {

    public void FixedUpdate()
    {
        transform.position += new Vector3(Time.fixedDeltaTime, 0, 0);
    }
}

No IKinematicObjects required! There is also a new ability that goes along with this that allows you to specify which object the character should move with.
Request: 1) Expose a boolean to prevent the character from moving around, 2) Expose a boolean that rotates the character in any direction with the object, 3)Expose a boolean to disable gravity. I think these will allow a character to pilot an airplane and stay in the seat when doing a loop, walk around a cargo ship/airplane/spaceship, drive a car and stay in the seat properly while flipping or crashing or rolling over, fly a dragon while doing all sorts of maneuvers, etc...
 
Version 2.2 has been started and one of the new features that it'll contain is split screen support for the first person perspective. The controller already works with split screen in a third person perspective.

SplitScreen.png
 
Will split screen support all the camera types?
Yes


Don't forget about this one as part of 2.2. :)
That is going to be a fun one. The drive ability still isn't finished but I'll post about it when it is done :)

Any chance for 2.2 feature request thread? For example, "click to move".
Click To Move was in version 1 of TPC and I'd like to include it in version 2 as well. Version 2.2 is pretty packed but depending on the timing of things I may be able to squeeze it in.
 
Justin, could you please share what's currently in v2.2? Initial integration of the new inventory system is probably the biggest feature and it's still the plan, right?

And I'm not sure if there any one of my previous requests made into the list, such as a swappable Animator controller, cancelable for MoveToward(and arbitrary orientation).

Thanks
 
Justin, could you please share what's currently in v2.2? Initial integration of the new inventory system is probably the biggest feature and it's still the plan, right?

And I'm not sure if there any one of my previous requests made into the list, such as a swappable Animator controller, cancelable for MoveToward(and arbitrary orientation).

Thanks
A high level set of 2.2 features are:

- Driving ability
- Split screen support
- Magic items
- Flashlight
- Integration with the inventory system

I'll work on other features as I have time and it makes sense with the structure. For example, I haven't started to add magic item support yet since the inventory system integration could change a lot on how that side of things is setup.
 
Thanks for the update.
You know MoveToward has some critical bug, getting stuck in an infinite loop if the target is not reachable.
It's been there from the beginning and still there. Please let me know if you don't intend to fix it.
Right now I just cancel it after a few seconds but I'll have to come up with something better.
 
Thanks for the update.
You know MoveToward has some critical bug, getting stuck in an infinite loop if the target is not reachable.
It's been there from the beginning and still there. Please let me know if you don't intend to fix it.
Right now I just cancel it after a few seconds but I'll have to come up with something better.
With Move Towards I plan on improving it so you can specify any arbritary location instead of it requiring an Ability Start Location. When I make that improvement I will also look at timing out if the character gets stuck.
 
Oh, that sounds good!

And I'm really excited about the new Inventory system. The current Inventory and Item system is probably the worst part of UCC and it looks like it will become the best System. ^^
 
Last edited:
I haven't updated this thread in awhile but we're making good progress on version 2.2 One of the new abilities within version 2.2 is a drive ability. This drive ability uses an interface to communicate with the vehicle so you'll be able to use the drive ability no matter what vehicle controller you are using. Here's an example of the character getting into the standard assets car:

drive.gif


Right now the new interface looks like:

Code:
    public interface IDriveSource
    {
        GameObject GameObject { get; }

        /// <summary>
        /// The character has started to enter the vehicle.
        /// </summary>
        /// <param name="character">The character that is entering the vehicle.</param>
        void EnterVehicle(GameObject character);

        /// <summary>
        /// The character has entered the vehicle.
        /// </summary>
        /// <param name="character">The character that entered the vehicle.</param>
        void EnteredVehicle(GameObject character);

        /// <summary>
        /// The character has started to exit the vehicle.
        /// </summary>
        /// <param name="character">The character that is exiting the vehicle.</param>
        void ExitVehicle(GameObject character);

        /// <summary>
        /// The character has exited the vehicle.
        /// </summary>
        /// <param name="character">The character that exited the vehicle.</param>
        void ExitedVehicle(GameObject character);
    }

The Move Towards ability has also been improved so it can use the pathfinding abilities in order to move towards the ability start point. This will allow a player-controlled character to avoid the car when moving to the drivers seat:

drive.gif
 
Top