回答編集履歴

1

回転量算出の誤りを訂正、角速度上限について追記

2021/10/15 09:44

投稿

Bongo
Bongo

スコア10811

test CHANGED
@@ -18,13 +18,9 @@
18
18
 
19
19
 
20
20
 
21
- // relativeRotationのxyzの大きさとwから回転量が得られ...
21
+ // relativeRotationのwから回転量が得られ...
22
22
 
23
- var sinTheta = math.length(relativeRotation.value.xyz);
23
+ var angle = 2.0f * math.acos(math.saturate(relativeRotation.value.w));
24
-
25
- var cosTheta = relativeRotation.value.w;
26
-
27
- var angle = math.atan2(sinTheta, cosTheta);
28
24
 
29
25
 
30
26
 
@@ -40,4 +36,26 @@
40
36
 
41
37
 
42
38
 
39
+ ![図1](5f50edbc49029fd3e749017de183c10e.gif)
40
+
41
+
42
+
43
+ なお、上図ではターゲットを素早く動かしても少々ゆったり追従する動きになっています。
44
+
45
+ これは`Rigidbody`の角速度がデフォルトでは7ラジアン/秒までに制限されているためでして、`Start`あたりで最大角速度を無制限にしてやれば...
46
+
47
+
48
+
49
+ ```lang-csharp
50
+
51
+ rigidbody.maxAngularVelocity = Mathf.Infinity;
52
+
53
+ ```
54
+
55
+
56
+
57
+ 下図のように一瞬で追従するようになるかと思います。
58
+
59
+
60
+
43
- ![図](728f4106875e882d5900538bf30163e0.gif)
61
+ ![図2](ca1b2083d06570ec24c89440bf6d58e7.gif)