Y(上下)を考えずに、3D空間上の2点間の角度を取得する方法です。
とりあえずコードはざっとこんな感じです。
角度がどっちだったらマイナスにするか、とかはニーズに応じて変えてください。
コード的には、
Unity5 メモ4 - Programming Serendipity
で書いたコードと基本的な考えは同じですが、(マイナスを含む)相対的な角度を出す計算で、 2Dの場合XY平面なので、そこの外積から出たZの値で判別していたのを、 XZ平面上のベクトルで外積を計算するとYに出てくるのが面白いですね。 外積の定義から言えば当たり前といえば当たり前かもですが。
ちなみに
外積を結構適当に理解してましたが、
↑のNamesの節の左にある画像が素晴らしくわかりやすいです。この画像を見てやっと外積の何たるかを理解したかもしれない。 wikipediaはたまに、日本語版の解説より英語版の画像のほうがわかりやすいことがあるんですよね。