2D Customizable Characters

>> AVAILABLE ON THE ASSET STORE <<

:zap: WEB DEMO :zap:
MANUAL | FAQ | SUPPORT

Finding high-resolution 2D characters in four directions can be a challenge. But an even bigger one is finding enough characters to populate your entire game! 2D Customizable Characters is a Unity solution specifically designed to solve this problem. This asset gives you two hand-painted and fully animated humanoid character models with in-depth customization options, allowing you to populate your game world with a wide variety of distinct and appealing characters.

Working with 2D Customizable Characters is as easy as dragging and dropping in the inspector. If you want to squeeze even more out of it, take advantage of various customization features through the runtime editor. When you feel satisfied with your character, there are several options to save it: simply export as a prefab, or if you prefer, export as PNGs compatible with your engine of choice.

If this sounds interesting, why not test the web demo and check it out for yourself!

Features
• Two 4-directional characters (male and female), fully customizable, and suitable for top-down perspective projects.
• Customize in the Character Editor or the Inspector.
• Unity animations for idle, walk, run, swing attack, stab attack, bow attack, hurt, die.
• All art assets in PNG.
• Save and load prefabs (editor only).
• Export characters and animations to sprite sheets (editor only).
• Save and load character with presets.
• Apply sets, for example, armor sets or outfits.
• Test play your characters with one click.
• Change customizations at runtime through the API

About the Characters
• Total size ~110×200px
• 3 rigs (up, down, side) created in a cutout doll fashion with each part animated by its pivot.

Customizations
• Appearance: Change appearance details such as eyes, hair, facial hair, and more.
• Equipment: Change outfits from top to toe, such as shoes, armor, and weapons.
• Scale: If the proportions don’t fit your style, you can scale the length and width of the head, limbs, and body size, allowing for a wide variety of proportions.
• Facial Expression: Simple sets that change the facial appearance to create expressions
• Save anything or all from the above into presets that can be applied later.

Would be very nice. But if I press “Export Sprite Sheets” I get the following error:

FormatException: Input string was not in a correct format.
System.Number.ThrowOverflowOrFormatException (System.Boolean overflow, System.String overflowResourceKey) (at <9aad1b3a47484d63ba2b3985692d80e9>:0)
System.Number.ParseSingle (System.ReadOnlySpan1[T] value, System.Globalization.NumberStyles styles, System.Globalization.NumberFormatInfo info) (at <9aad1b3a47484d63ba2b3985692d80e9>:0) System.Single.Parse (System.String s) (at <9aad1b3a47484d63ba2b3985692d80e9>:0) CustomizableCharacters.CharacterEditor.UI.CaptureAreaBounds.UpdateSettings () (at Assets/2D Customizable Characters/Character Editor/Scripts/UI/CaptureAreaBounds.cs:165) CustomizableCharacters.CharacterEditor.UI.CaptureAreaBounds.UpdateBounds () (at Assets/2D Customizable Characters/Character Editor/Scripts/UI/CaptureAreaBounds.cs:148) CustomizableCharacters.CharacterEditor.SpriteExporter.Bind (CustomizableCharacters.CharacterEditor.SpriteExporterClip[ ] clips, UnityEngine.AnimationClip[ ] defaultPoseClips, UnityEngine.Animator animator) (at Assets/2D Customizable Characters/Character Editor/Scripts/SpriteExporter.cs:122) CustomizableCharacters.CharacterEditor.UI.CharacterEditorManager.OpenSpriteCreator () (at Assets/2D Customizable Characters/Character Editor/Scripts/UI/CharacterEditorManager.cs:114) UnityEngine.Events.InvokableCall.Invoke () (at <86acb61e0d2b4b36bc20af11093be9a5>:0) UnityEngine.Events.UnityEvent.Invoke () (at <86acb61e0d2b4b36bc20af11093be9a5>:0) UnityEngine.UI.Button.Press () (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:70) UnityEngine.UI.Button.OnPointerClick (UnityEngine.EventSystems.PointerEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/UI/Core/Button.cs:114) UnityEngine.EventSystems.ExecuteEvents.Execute (UnityEngine.EventSystems.IPointerClickHandler handler, UnityEngine.EventSystems.BaseEventData eventData) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:57) UnityEngine.EventSystems.ExecuteEvents.Execute[T] (UnityEngine.GameObject target, UnityEngine.EventSystems.BaseEventData eventData, UnityEngine.EventSystems.ExecuteEvents+EventFunction1[T1] functor) (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/ExecuteEvents.cs:272)
UnityEngine.EventSystems.EventSystem:Update() (at Library/PackageCache/com.unity.ugui@1.0.0/Runtime/EventSystem/EventSystem.cs:501)

Thanks for reporting the problem, I’m not able to reproduce it but I might possibly have a hint of what it is.
Could you try and replace the “2D Customizable Characters\Character Editor\Scripts\UI\CaptureAreaBounds.cs” with the attached file and see if that makes any difference?

If not, could you please send me an email so I can help figure out what is going on? Please find my email here: https://www.danielthomasart.com/CustomizableCharacters/Manual/manual/contact.html

Thanks!

8511227–1134161–CaptureAreaBounds.cs (11.5 KB)

Many thanks for your instant reply. Now with the new file it works. Great tool, much more possibilities than with the two old character creators.

1 Like

Good afternoon, how are you? I acquired the assets: 2D Customizable Characters | 2D Characters | Unity Asset Store

And I’m trying to customize my character based on an inventory.
To do this, I need to have a list of items: “Customization”, but every time I expand this list in the Unity inspector, Unity gets all buggy, can you help me?

Below is the code image, and the second image is the problem that occurs when I expand the variable: “_customizationsList”

I’m not sure what is going on, I never had this before. What Unity version are you on? Could you provide exact steps to reproduce this and I will have a look.

Good afternoon, the assets look wonderful, however I am having some issues with the use of collisions and rigidbody. Specifically, either the character ignores colliders or, upon collision a dynamic rotation occurs which is very undesirable.

In your DemoCharacterController.Move function you use transform.position directly. My understanding is that this can cause issues with rendering the physics as you are manipulating the objects location directly but not velocity. Typically, we would want to add a force or velocity to the object and cap its maximum acceleration and speed. Please let me know if there is a different workaround to this issue as I’m currently a bit stumped.

Thanks,

Thanks for reaching out! The DemoCharacterController is for demonstration purposes only and not something I would use in production. As you mention, if you want to use Unity’s physics you would not move with the transform, but a rigidbody.
If you want to use the demo character controller with physics, changing the Move method to use a rigidbody instead is the easiest.

[SerializeField] private Rigidbody2D _rigidbody;
       
private void Move(Vector2 amount)
{
            _rigidbody.velocity = amount;
}

I hope that helps!

Thanks so much, yup that totally makes sense and what I was going to do, I just didn’t know if the system had some other kind of mechanism that I was missing and simple. I just didn’t want to go ahead with changing root code like that as it can often cause a whole bunch of issues down the line if there’s some other logic.

Hey,

After playing around with these assets I have to suggest that more work should be done on the character controller. The art is great, but for new unity programmers I fear that this asset is simply unusable and should be patched to fix some issues. I don’t want to sound nick-picky, but at this time the controller is basically unusable and I had to rewrite the entire controller and animators which duplicates a lot of work for no reason. Here is what I found.

  1. No out of box collision support. Collision with your other environment packs actually is quite annoying to debug and resolve (see above previous comment). Your assets should work together out of box.

  2. Player-NPC interactions. Prefabs default into input controls making it impossible to use the prefabs as NPC’s without rewriting the code, specifically, input keys are mapped and if you detach these the animations all go bonkers. The default motion is similarly mapped to WASD with the _horizontalInput & _verticalInput not mapped in a logical way or with any comments if there’s some other logic that’s being used here. Similarly, there’s no support for multiple players on screen at the same time.
    My suggestion is to abstract the controller logic from the animation and movement to allow for custom mapping more efficiently and for NPC movements to be controlled better.

  3. Documentation and commenting. Theres basically no XML comments and the documentation could use sprucing up. This made it quite frustrating to go through the logic and figure out how things are supposed to work together which just resulting in me implementing my own solutions (i.e. the base default animation is “up” without some kind of input even adjusting the animator doesn’t resolve this). This really shouldn’t be the case and would make new users have quite an unpleasant experience.

I’ll post here with any other things as they come up.

Thank you for the feedback! I would like to still make a point about the character controller is for demo purposes only and the asset should firstly be considered an art asset. This is not how I would make a character controller for a project, and as you touch on point two, it would get more complicated and a project in it self. Basically it just moves the character and show of animations, in one class. I do think you create a point in not having it on the character in the first place, but I liked the idea people could test the characters right in the editor before exporting it for their project.

I’m sorry if having it included in the asset gave the wrong impression, or you feel it was advertised. If so, let me know and if you have feedback on how I can make or clearer to avoid any confusion, I would appreciate it.

Yeah absolutely, I understand that which is why I just did a workaround as I am more than capable of doing that myself. This comment is purely just from the perspective of dealing with new Unity users, of which are a large portion of the ecosystem.

Perhaps I would suggest instead just have a basic animation controller abstracted out. It’s not trivial to map all the animations and “left"right"Bottom"Top” written out. It would be helpful if this was abstracted away from the input logic i.e. just have a controller interface with the animation to correctly dictate the “state” of animation (perhaps simply through an enum). This way anyone can put in any input logic that they want without having to rebuild the animation models and mappings as that is quite tedious and is needed to use the art in any project.

Fair enough, what did you feel was confusing when trying to get the animator to show the correct “state”? When looking at the animator and the parameters, was something not really clear and could be better named? I can see direction can be a bit abstract in the way it’s just a number, and the side view need to be flipped for the other direction. This one would not see unless checking the blend tree.

I agree that for a new Unity user it would be hard to create and setup a character controller, while for 3D projects Unity already have a generic solution and character controller - which have a lot if youtube tutorials. But I was hoping having sprite sheet exporting it could be compatible with other assets, as many of them support spritesheets.

Again, thank you for the feedback!

Hi,

I am looking at using this asset within Unity but to export the assets into sprite sheets, which looks like this can be done.

Is it easy to configure these characters to be like Ninjas and can they also be animated to not only swing a sword, but look like they can throw a star if needed?

Thanks

Hi,
At the moment there are no ninja outfits, so these you would need to create yourself. So it would depend on how comfortable you are with that.
You can create your own custom animations, which are regular unity animations and you would be animating joints by manipulating the transforms. It is a bit tedious and if you want to use 4directions the animations would need to be done for 3 directions (up,down,side).

So in all honestly, if you looking for a package with these needs and are not ready to invest some time to learn the “character rig” and not comfortable doing animations and working in Unity - I think you might do better keep looking for an asset that fits your needs more.
Thanks!

New update 1.1 hit the store, which comes with a new skeleton prefab