質問するログイン新規登録

回答編集履歴

1

dirをdir・forwardで割ることについて追記

2019/08/15 23:05

投稿

Bongo
Bongo

スコア10816

answer CHANGED
@@ -16,4 +16,23 @@
16
16
 
17
17
  ビューポート上の座標を変化させないためには、オブジェクトとカメラを結ぶ直線に沿ってオブジェクトを遠ざけていくべきかと思います。あるいは、ワールド座標に変換する前のビューポート座標の段階でZ成分に値を加算するかでしょうね。
18
18
 
19
- ![図3](14e9457a850ced859d23982fc4ce776c.gif)
19
+ ![図3](14e9457a850ced859d23982fc4ce776c.gif)
20
+
21
+ #追記
22
+
23
+ コメントで申し上げた`normalizedDir`をnDir、`Camera.main.transform.forward`をforward、2つのベクトルの間の角度をθとすると、これらは下図のような関係になります。
24
+
25
+ ![図4](6258ae7eab7ed8a45724045d28f417d1.png)
26
+
27
+ nDirとforwardの内積の値は |nDir||forward|cosθ ですが、nDirもforwardも長さが1なので値はcosθです。
28
+ 斜辺と隣辺の角度がθの直角三角形を作ると、cosθは「斜辺に対する隣辺の長さの比」と見ることもできますので、cosθは下図の部分の長さを表しているとも言えるでしょう。
29
+
30
+ ![図5](eacb48df1d787a85ee7629880cddf6f3.png)
31
+
32
+ ここでnDirをcosθで割ってみると、向きがnDirと同じで長さが1/cosθのベクトルができます。これを仮にvとすると、vとforwardの内積は |v||forward|cosθ であり、|v|は1/cosθ、|forward|は1なので内積の値は1になるはずです。つまり、forward方向の成分が1のベクトルを作ったと言えるでしょう。
33
+
34
+ ![図6](8de3e839882716ebc57a08f4fb2b4084.gif)
35
+
36
+ そしてオブジェクトをv * 3だけ移動させてみます。すると下図のように、forward方向へはちょうど3移動しているのがお分かりいただけるでしょうか?
37
+
38
+ ![図7](5f88979b94852e39dd2efc1571a4ac24.gif)