I don't like charging per-asset because the work that goes into those varies too much. Instead, I prefer to work on larger sets of assets at once (e.g. entire tilesets, entire character animation sets, etc), and I give prices based on how long I expect to take to complete the work. I use hourly rates as a tool to help me estimate the cost of the work. The trick to hourly rates is to remember that people pay extra for fast work too, not just for good work.
When I quote prices, I give my hourly rate for that type of work, and a range of hours I expect to be able to do it in, and we either agree on that range or on a fixed price in that range. If I do it faster, then I still get paid the agreed amount (or the minimum of the range). If it takes me longer, then they don't pay beyond the upper agreed-upon price, because it's not fair for the client to pay for my ineptitude.
My hourly rate is basically what feels right rather than something scientific. It's based on factors like living wage in 1st world countries, some extra to account for all the unpaid work that goes into freelancing (e.g. talking to clients, promotion, etc), the prices of other artists, and perhaps other factors I'm failing to think of right now.
Prices are flexible and fluid; if you feel you weren't compensated fairly for a job or if you're getting too few or too many offers because of your prices, you can always change your prices for the next job.