回答編集履歴
2
補足
test
CHANGED
@@ -22,7 +22,7 @@
|
|
22
22
|
|
23
23
|
```
|
24
24
|
|
25
|
-
Vector3.upは``Vector3(0,1,0)``のことで
|
25
|
+
Vector3.upは``Vector3(0,1,0)``のことです。つまり真上に伸びたベクトルです。そこからさっき求めた``diff``方向の向きにする回転クォータニオンを求めます。クォータニオンならrotatinにそのまま入れられるので代入することでオブジェクトの向きがターゲットの方向へ変わります。
|
26
26
|
|
27
27
|
|
28
28
|
|
1
補足
test
CHANGED
@@ -2,14 +2,28 @@
|
|
2
2
|
|
3
3
|
![イメージ説明](f8faa23ed584d7c0d787b0584cbbb4ef.png)
|
4
4
|
|
5
|
-
ターゲット位置(b)から自分の位置(a)を引くことでターゲットに向かうベクトルが(Vector2(5,4))が求められます。
|
5
|
+
向きたいターゲット位置(b)から自分の位置(a)を引くことでターゲットに向かうベクトルが(Vector2(5,4))が求められます。
|
6
6
|
|
7
7
|
|
8
8
|
|
9
|
-
そのまま使ってもいいですが、ベクトルは長さを1に揃えたほうが都合が良いのでnormlized(正規化)して、長さ1のベクトルに整えます。
|
9
|
+
そのまま使ってもいいですが、ベクトルは長さを1に揃えたほうが都合が良いのでnormlized(正規化)して、長さ1のベクトルに整えます。(今回はターゲットのほうを向きたいだけなので、向きさえわかれば良いのでベクトルの長さは重要ではないため)
|
10
|
-
|
11
|
-
上記の例だと、正規化した場合は(0.8,0.6)ぐらいですかね。
|
12
10
|
|
13
11
|
|
14
12
|
|
15
13
|
[https://docs.unity3d.com/ja/2018.4/Manual/UnderstandingVectorArithmetic.html](https://docs.unity3d.com/ja/2018.4/Manual/UnderstandingVectorArithmetic.html)
|
14
|
+
|
15
|
+
|
16
|
+
|
17
|
+
そして次の``Quaternion.FromToRotation``を使ってクォータニオン(回転)を作ります
|
18
|
+
|
19
|
+
```cs
|
20
|
+
|
21
|
+
transform.rotation = Quaternion.FromToRotation( Vector3.up, diff);
|
22
|
+
|
23
|
+
```
|
24
|
+
|
25
|
+
Vector3.upは``Vector3(0,1,0)``のことで、さっき求めた``diff``方向の向きにする回転クォータニオンを求めます。クォータニオンならrotatinにそのまま入れられるので代入することでオブジェクトの向きがターゲットの方向へ変わります。
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
参考:[https://teratail.com/questions/140901](https://teratail.com/questions/140901)
|