回答編集履歴

2

補足

2021/01/13 06:31

投稿

hogefugapiyo
hogefugapiyo

スコア3309

answer CHANGED
@@ -10,6 +10,6 @@
10
10
  ```cs
11
11
  transform.rotation = Quaternion.FromToRotation( Vector3.up, diff);
12
12
  ```
13
- Vector3.upは``Vector3(0,1,0)``のことでさっき求めた``diff``方向の向きにする回転クォータニオンを求めます。クォータニオンならrotatinにそのまま入れられるので代入することでオブジェクトの向きがターゲットの方向へ変わります。
13
+ Vector3.upは``Vector3(0,1,0)``のことです。つまり真上に伸びたベクトルです。そこからさっき求めた``diff``方向の向きにする回転クォータニオンを求めます。クォータニオンならrotatinにそのまま入れられるので代入することでオブジェクトの向きがターゲットの方向へ変わります。
14
14
 
15
15
  参考:[https://teratail.com/questions/140901](https://teratail.com/questions/140901)

1

補足

2021/01/13 06:31

投稿

hogefugapiyo
hogefugapiyo

スコア3309

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