のしメモ アプリ開発ブログ

Unityアプリとかロボットとか作ってるときに困ったこととかメモ

LookAtを線形補間を使って使いたい

オブジェクトを任意の方向に向けるtransform.LookAt()というメソッドがありますが、それを線形補間(Lerp)を使って表現する方法メモ

コード

# 2017/09/12 サンプルコードを修正(Time.time -> Time.deltaTime)

Vector3 targetPosition = Vector3.zero; // 任意の向く座標
float speed = 2f; // 回転スピードを定義

void Update () {
    Vector3 direction = targetPosition - transform.position;
    Quaternion toRotation = Quaternion.FromToRotation(transform.forward, direction);
    transform.rotation = Quaternion.Lerp(transform.rotation, toRotation, speed * Time.deltaTime);
}