17/10/08 13:02:56.37 fTBqzW3p.net
>>658
こんな感じか?
public class RotationFollower : MonoBehaviour {
public Transform target;
private Quaternion prev;
void Start () {
if (target != null) {
prev = target.rotation;
}
}
void Update () {
if (target != null) {
var rot = target.rotation * Quaternion.Inverse (prev);
transform.rotation = rot*transform.rotation;
prev = target.rotation;
}
}
}
重要なのはQuaternionの掛け算は、前後関係入れ替えると回転の適用順が逆になり、結果が違うということ。
まずワールド座標系でAの回転量だけ回す、次に回転後の座標系でBの回転を適用する必要がある。
transform.rotation = rot*transform.rotation;
↑この行を
transform.rotation *= rot;
に変えて挙動を比較してみると結果の違いが観測できるだろう。