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

回答編集履歴

1

サンプル追加

2025/01/09 00:08

投稿

katsuko
katsuko

スコア3601

answer CHANGED
@@ -4,3 +4,28 @@
4
4
  `RotationConstraint` は使ったことはないのでよく知りませんが、「自身の回転」と「ターゲットの回転」を [`Quaternion.Slerp`](https://docs.unity3d.com/ja/2019.4/ScriptReference/Quaternion.Slerp.html)で `Weight` で補間すれば実現できるのではないでしょうか。
5
5
  「Freeze Rotation Axes」の設定は、「ターゲットの回転」を設定に合わせて調整すれば実現できそうだけど、ちょっと試してみないとわかりませんね。
6
6
  とりあえずFreezeAxesのことは考えないで `Quaternion.Slerp` を使って試してみてはいかがですか。
7
+
8
+ -----
9
+ 追記: こんなスクリプトを書いたら、それっぽく動きましたよ。
10
+ (別のPCで動かしたので、書き直しているので間違っているかもしれないけど)
11
+
12
+ ```csharp
13
+ using UnityEngine;
14
+
15
+ public class TestScript : MonoBehaviour {
16
+ [SerializeField] private Transform target;
17
+ [SerializeField] private float weight;
18
+ private Quaternion baseRotation;
19
+
20
+ private void Start()
21
+ {
22
+ this.baseRotation = this.transform.rotation;
23
+ }
24
+
25
+ private void Update()
26
+ {
27
+ this.transform.rotation = Quaternion.Slerp(this.baseRotation,
28
+ this.target.transform.rotation, this.weight);
29
+ }
30
+ }
31
+ ```