New to Blender and my first time using textures. I tried to do a clay-like model but on some parts, the texture is stretching (eyes and legs particularly).
Any idea what I did wrong?
Have a look at the UV map.
The leaf takes a lot of texture UV space but it's fairly small in 3D space. That way it has a lot of details (=compression). But the eyes get very little texture space and are big in 3D space. So they have only little texture details (=stretching).
A checkerboard texture can visualize this for you. Ideally, the chess patterns should all be the same size.
You can try to unwrap again with Smart UV Project (What is the difference between Unwrap and Smart uv project?).
Or edit the UV map
scale down the leaf in the UV editor (hover mouse over an UV island and press L to select it).
and try menu: UV → Minimize Stretch. The editor will then try to give the eyes more space (hopefully).
Let's say you create a very simple mesh:
The automatic UV unwrapping will give a very predictable result:
The mapping can be rotated and scaled so it looks exactly like the mesh (since the mesh is two-dimensional)
Now, the mesh can be modified to represent a box, without changing the UV:
You can notice, that the the texture is not wrapping correctly around the edges:
This is because those edges don't connect on UV map:
But how do you connect them? You can't - not unless you're willing to warp some of those squares into a different shape:
And that's how you get stretching using automatic UV unwrapping. You can strategically mark seams to decrease stretching; here I will completely get rid of stretching, by selecting 4 bottom edges and one of vertical edges, right clicking and choosing "mark seam":
In your particular case, you want to add seams in the least visible parts like the back and bottom of the head. You may also just add a seam in a visible spot, but fix the texture later, by copying a fragment near one side of the seam on a temporary layer to the other side of the seam, then painting to hide the differences.