Wanted to make a 3D character controller for a while. The way that 3D characters are made for video games is really interesting.

What it does

It's a bear that a player controls that reacts to and touches its environment with the use of inverse kinematic targets (IK) as it walks around.

How I built it

I sketched out the bear to begin with. Then I sculpted a high-resolution bear mesh in Blender using Dynotopo, and created a low-poly mesh by hand. I rigged (assigned virtual bones for animation) this low poly mesh, animated it, and created UV maps which I painted using the texture paint mode in Blender.

After the modeling and animating was complete, I learned how to import blender models/animations into Unity correctly to work with their humanoid model importer. I spent some time on this part because the import settings are necessary for IK and animation to work.

Once the model was imported with its animations set up in the animator window, I watched a tutorial on how to program IK targets and blend them with existing animations using Unity. I wrote a script to raycast in front of and to the sides of the player, and assign the IK targets and weights.

The character itself moves around the scene using forces scaled by the player's input, acting on a sphere collider within Unity's physics system.

Challenges I ran into

I spent over an hour trying to figure out why my IK wasn't working - It turns out that the OnAnimatorIK() function must be written in a script attached to the same object as the affected Animator.

Accomplishments that I'm proud of

I went through the full process of making a character, and programmed it to react to its environment. I'm glad I could do this in 24 hours, because I don't think that I would've done it otherwise. But I think that I might do it again now that it's over.

What I learned

A bit of the patience needed for 3D modeling, and the process of taking animated objects into Unity for rigging.

What's next for Bears!

A video demo, and to exist as reference for future projects!

Share this project: