Actor Controller - an advanced character controller


Get it on the Asset Store!

The Actor Controller is an advanced character controller for use in any type of game and with any type of character. It’s a silky smooth replacement for Unity’s default character controller that’s built with simplicity and performance in mind.

Advanced features include:

  • Walking on walls
  • Moving and rotating with platforms
  • Handling super-fast movement
  • Limiting and sliding on slopes
  • Orienting to the ground
  • Moving with nav meshes
  • Changing gravity
  • Customizable body shapes
  • Live state history
  • Complete code (C#)
  • and more…

Demo Video:

Quick Start Video:

3 Likes

As we wait for the AC to get approved, I thought I’d share another video . This time I’m talking about ‘body shapes’.

Body shapes allow you to customize the collision shape of your character. That’s right… you’re no longer stuck with just a single up-right capsule. :wink:

2 Likes

This is great! I’ve been looking for an advanced character controller in Unity. :slight_smile:

So … watching the video and seeing how the AC handles colliders, I found myself wondering if ragdoll colliders might be integrated. Or is this not the right place for that?

2 Likes

I’m having a lot of fun with the wall walking feature. Here’s a fun experiment. Make a sphere about 500 meters across. Tessellate it to the limits of your computer’s processing power, and then use the highest res DEM map of the Moon you can find to displace the mesh a bit. Add 8k diffuse and normal maps to texture it, and a low res spherical collider so you don’t tilt at every bump and crater you hit. Viola! You’re walking on your own mini-moon.

You can substitute any other planet you have good topographic maps of, or make your own! Next up: a ring construct as seen in Halo. How about Mobius World? Spaghetti World? Escher World? The possibilities are endless, and so far, Actor Controller has handled them all without a hitch. Thanks Tim.

3 Likes

haha… That’s awesome!

Still waiting for Unity’s approval. :frowning:

As we’re waiting for approval, I’m continuing to do more testing. I thought sharing performance and memory would be helpful.

In this scene, there are 9 actors. When idle, the Actor Controller and driver are taking about 0.01 milliseconds. When actively moving and colliding with objects, they take about 0.03 milliseconds each. This last number can change as it depends if you have collisions enable, what the objects are colliding with, how fast actors are moving, etc.

For 3 of the moving objects, you can see 80 bytes of garbage in the frame (per actor). Unfortunately, this is due to Unity’s underlying physics calls (SphereCast, OverlapSphere, etc). However, 80 bytes is pretty small and even mobile devices should handle it well.

There is already a request for “garbage free physics”:
http://feedback.unity3d.com/suggestions/garbage-free-physics

Note: In order to capture stats and hook to the debugger, you have to create a development build vs. a release build. Development builds typically have overhead both from a performance and garbage standpoint.

4 Likes

So excited for this. Does it usually take this long to get through the asset store?

1 Like

It’s normally between one and two weeks for approval, but various things can stretch out the time, like number of new asset submissions in that period, staff vacations, conferences, and stuff like that.

So any day now. :slight_smile:

1 Like

Thanks! I’m excited to get it out. :smile:

This is the longest it’s ever taken. I was going to email Unity, but I noticed they updated their publisher site. As @hopeful mentioned, it now says “an average of 2 weeks”. Tomorrow is officially two weeks. I figured I’ll poke them on Friday if we don’t see anything.

Whoo hoo! The Actor Controller is out! :smile:

Thanks again @hopeful and @FargleBargle for the great testing help.

As always, please let me know if you have any issues.

Note: Remember that if you own the Motion Controller, you will get the AC for free once the Motion Controller v2 is released next month.

1 Like

Woohoo! Grats on release!

Question as far as the Motion Controller folks. Assuming it is going to be bundled in v2? Or will we get vouchers? Simply asking as far as ratings and reviews go since we can only do those based on what asset store sees that we purchased.

It will be bundled in the MC v2 package. We can only give 10 vouchers per product per year. So, I can’t do it that way.

As you mentioned, that will keep MC users from being able to write reviews on the AC. However, I felt that it was more important to provide MC users with the newest features and I don’t think you should have to pay for v2. It may hurt the AC in the long run, but that’s life and I’ll live with it. :wink:

1 Like

Looks like the videos are embed wrong… (saw them in youtube, but can’t see them here or in the asset store description).
I’m kinda interested on the wall walk, but… you need to jump so you can change surfaces? isn’t possible to just walk and change axis/gravity?

Hey @Xentar , I can watch the videos here and on the asset store page in both Chrome and IE. What browser are you using?

With the wall walk, it does work as you suggest. I think this video shows what you’re asking about:

I’ve included one of my development scenes in the package. In there, there’s a ramp that goes from the floor to the wall and another from the wall to the ceiling. In those cases, the character just walks and rotates.

The “spider driver” is a little different because I wanted him to be able to walk up to any obstacle and jump onto it (event if it’s a 90-degree angle). However, he doesn’t need to jump if we’re just talking a 20 or 30 degree angle.

By creating your own driver and telling the AC what to do, you could create a creature that doesn’t need to jump at 90-degree angles.

this seems perfect for npc controls with complex action, do you have a roadmap about features you want to add? can i do controls for parkour player for example? ( climbing wall run and jump)

@Tryz Hmm, now i can see the videos… (chrome) extrange.
Uhm… but with a little change on the code is posible to let it adjust on a 90° angle? what i want is a spider that can walk over anything (any angle, surface, etc.), and if jump, fall.

Congrats on the new addition to the Ootii page in the asset store!

The Actor Controller is great. I particularly like the wall walking abilities. You can configure it to respond in some slightly different ways by using the advanced settings.

It also behaves pretty well for characters that move at high speed. :slight_smile:

1 Like

If I’m not mistaken, this was one of the reasons for making the Actor Controller. The plain Unity CC could get buggy in all kinds of different situations. The Actor Controller was designed to do a better job of navigating obstacles, so it ought to be a good match for acrobatics and parkour.

When the Motion Controller v2 comes out, that’s going to be an interest of mine. I want quality athletic movement for my game.

1 Like

I see what you’re saying… yes. It’s totally doable…

For us nerdy types, keep reading… :slight_smile:

The “driver” is responsible for telling the AC what to do. In the case of the demo, I’ve got a spider driver, the default actor driver, a nav-mesh driver, and several others.

In the “Spider Driver” specifically, I call the AC.SetTargetGroundNormal() function to tell the spider how to orient. In my case, when you jump he shoots a ray forward, grabs the normal of the wall, and rotates towards it. In your approach, you’d constantly be shooting a ray forward, grab the normal if there’s a hit, and use the SetTargetGroundNormal() function with that. Totally doable and pretty easy. You just have the small overhead of the constant raycasts.

If there’s one tricky part, I’d say it’s rotating the character off the ground. In my approach, the jump takes the spider off the ground and he can rotate without having to worry about some collision stopping the rotation. In your approach the character would be on the ground and rotate to the new ground. Depending on the shape of your character, it might be an issue unless you move him up off the ground some. I hope that makes sense.

Hey @Damien-Delmarle ,

Exactly. As @hopeful mentioned, I had some frustration with the Unity character controller. The AC gives us more control over things like rotations, platforming, and shapes. I also created a couple of “drivers” that make NPCs easier to control with the AC

For all your other questions, I think this will help…

I’ve been a professional programmer for over 20 years. What I’ve come to love is the idea of component-izing things. So, I tend to build things that are responsible for specific tasks. By pulling different components together, we can do most anything.

So, the AC is a component responsible for grounding, collisions, wall-walking, platforms, and general body shapes. It doesn’t really know why you’d want to do these things… it just knows how to do them.

The “drivers” (and the Motion Controller is an uber-driver) has specific goals… move here, play this animation, react to input. So, they know ‘why’, but they rely on the AC to figure out the ‘how’.

So, to your question about parkour: Absolutely the AC can be used as the foundation for parkour. However, you’ll have to create a driver that tells the AC what to do and when. In my world, that’s the Motion Controller (v2).

A roadmap for the AC? Not really. That isn’t to say there won’t be new features added, but I think it’s done. Now, my focus is on creating drivers that use it to accomplish things. Again, the big driver is Motion Controller v2.

Ignoring the MC for a bit, the AC actually comes with several example drivers:

  1. Actor Driver - basic driver that takes input and moves a character around
  2. Animator Driver - takes input, but uses root-motion to drive the character
  3. Nav-Mesh Driver - doesn’t use input. Instead, it uses Unity’s nav mesh to control the actor
  4. Sphere Driver - controls a sphere and rolls it around like a giant ball
  5. Spider Driver - shows how to jump onto walls

You can also create your own drivers that tell the AC what to do.

This approach allows the AC to be used for any type of game and any type of character.

I hope that answers all your questions.

2 Likes