As far as my knowledge goes, auto aiming is simply looking at a specific coordinates on screen, that are tied to players viewpoint, and bullets travel relatively from the center of the screen (crosshair) anyways.
For multiplayer FPS games, like Quake and CS, the model has bone structure beneath, and all the aimbots are working by specifying which of them to track.
Same for you, in your camera script or player controller or something (don't know how UDK handles all the stuff), in order to autoaim through walls and everything (the most brutal way), you'd simply:
- scan around to find objects you want to be auto-targetable. It could be as simple as
foreach loop through all the game objects of particular type or simply, all game objects.
- find the object that is the closest to the player, lock to it. The locking part could be done with a simple Camera lookAt call. And, if it's tied to player, you're done. If it's not, you have to transform the camera pivot coordinates to player.
That's basicly it, you can then add an extra flavor, like: to select only (loop through) only visible objects; to select only objects within certain distance; to apply auto-targeting only when players raw aim is in particular range from the target (on screen, you'd need some math here).
That's the raw concept, unformatted.