Use EdgeShapeFunction. Built in shapes:
RandomGraph[{50, 500},
DirectedEdges -> True,
EdgeStyle -> Directive[Opacity[.3], Black],
GraphLayout -> Automatic,
VertexLabels -> Placed["Name", Center],
VertexSize -> .3,
EdgeShapeFunction -> GraphElementData[{"HalfFilledArrow", "ArrowSize" -> .02}],
ImageSize -> 800]
Custom shapes:
ef[pts_List, e_] := Block[
{size = .02,
offset = .9},
{Arrowheads[{{size, offset}}], Arrow[pts]}]
RandomGraph[{50, 500},
DirectedEdges -> True,
EdgeStyle -> Directive[Opacity[.3], Black],
GraphLayout -> Automatic,
VertexLabels -> Placed["Name", Center],
VertexSize -> .3,
EdgeShapeFunction -> ef,
ImageSize -> 800]