How to create different camera for FPS weapons?

Hi,

I want to create a different camera for the FPS weapons and elements which show the gun and hands with a fixed FOV so that my animations dont look bad when I change the FOV of the main camera. See this video
from 3:36 to know more - How Great First-Person Animations are Made - 10 Tips for Animating FPS Characters/Weapons in Blender - YouTube

I also want the weapon not to go throught walls when we are close to them. This is implemented in almost every FPS game and it works very well.

How can I achieve in UE4?
Thanks