【Unity入門】lookatを使いこなせ!いろんな回転をまとめました

sato
書いた人 sato

Unityで作品を作る上で、回転はとても大事な要素ですね。

そんな回転の中でも、特に需要の高い手法の一つに特定のオブジェクトの方向を向かせるといったことがあげられると思います。

例えば以下のように特定のオブジェクトを、カメラで追うとかでしょうか。

実はUnityならそれがLookAt関数一つで行えるんです!

使い方も非常に簡単なので、ここで学んで見てくださいね。

[基本] LookAtとは?
[基本] LookAtを使ってみよう!
[応用] LookAtのいろいろな使い方!

今回はLookAt関数の基礎部分を学び、続けて応用的な使い方まで見ていきましょう!

それではよろしくお願いいたします!

LookAtとは?

lookat関数を一言で表すなら「指定した方向を見る関数」です。

和訳した通りですね!

lookat関数はオブジェクトが保持するtransformコンポーネントの中に存在する関数で、使用するとそのオブジェクトを指定した方向へ向かせることができます。

これを使用すれば、さっき見たような特定の物を注視する処理を一瞬で実現できますよ!

早速使い方を学んでみましょう!

LookAtを使ってみよう!

では実際に先ほどのオブジェクトを注視する、プログラムの中身を見てみましょう。

このプログラムの、カメラには以下のプログラムをつけています。

このプログラムの重要な点は以下の部分です。

自身(カメラ)のtransformのLookAt関数へ、注視したいtargetObjectを渡しているだけですね!

それをUpdate関数の中で行っているため、常にオブジェクトを注視できているわけです。

非常に簡単ですね!

LookAtの具体的な使い方

続けてLookAt関数の、引数などの具体的な使い方を見てみましょう!

リファレンスを見ると、LookAt関数の引数はこのようになっています。

第一引数には、注視したいオブジェクトのTransformを入れましょう。

第二引数には上方ベクトルを指定することができますが、特殊なことをやらない限りはVector3.upで問題ありません。

また先ほどの例題に第二引数が設定されていないのは、第二引数のデフォルト引数がVector3.upとなっているからですね!

※デフォルト引数・・・呼び出すとき省略した場合、自動的に使用してくれる引数

LookAtの応用的な使い方!

LookAtを応用すると、いろいろな便利なテクニックが行えます。

その応用例を簡単に見てみましょう。

簡易ビルボードを作ろう!

ビルボードとは、オブジェクトを常に正面へ向かせる仕組みの事を言います。

どんな時に使われるかというと、以下のような場合でしょうか。

・メニュー
・エフェクト
・遠くの雲や木・草などの背景

ゲームなどに詳しい人は「近づいたら実は、カメラに対して正面を向き続けるだけのペラペラな木」なんてものを見たことがあると思います。

あれがビルボードなんです。

ビルボードの有用性は長くなるのでまた別の機会に、説明するとして…

LookAtを使用すると、この仕組みを簡単に実現することができます。

これは先ほどカメラに付与した「常にオブジェクトの方向を見続ける」処理を、オブジェクト側にもつけた状況です。

当たり前ですがカメラ側を見続けてくれていますね!

【補足】簡易ビルボードの「簡易」って?

実は、正確なビルボードはまた違った作り方をする必要があるからです。

単純にカメラの方向だけを見続けた場合、オブジェクトにカメラが近づくと不自然に回転が見えてしまうことがあるんです。

そのため、よく使われる「より正しいビルボード」の作り方はカメラの逆行列をオブジェクトに入れる方法となります。

また木などをより自然に表現するためには、Y軸を固定したりなどの手法を取り入れる必要もあります。

その辺りを説明し始めると長くなるため、また別の機会に見ていきましょう。

ゆっくり追いかけてみよう!

Unityを使っていくと、緩急のある動きをつけたくなることもありますよね。

この緩急は、よりクオリティの高い作品を作る上で重要なテクニックです。

先ほどのようにLookAtを使うと、指定した方向をすぐに向くことができますが、それでは直線的な動きになってしまいます。

より一段上を目指すために、緩急をつけた回転を行ってみましょう!

緩急をつけるとこんな動きになります。

ゆっくりと、オブジェクトの方向を向くようになりましたね!

実際のソースを見てみましょう。

先ほどのカメラにつけたソースを改修しています。

各処理の内容としては、コメントに記述がある通りです。

実はゆっくり追いかける処理に、LookAt関数は向きません。

そのためQuaternion.Slerp関数を使用しています。

この関数が補完処理を行ってくれています。

Slerp関数の使い方を簡単に書くと、第一引数、第二引数に与えられた回転情報を、第三引数の速度で補完をかけてくれる関数と言えるでしょう。

またLookAt関数との違いを一言で行ってしまえば以下のように言えるでしょうか。

LookAt関数・・・すぐに指定方向を向かせる時に使う
Quaternion.Slerp関数・・・方向を補完しゆっくり回転させる時に使う

ぜひ上手に使い分けてみてください。

まとめ

今回はLookAt関数や、それに関する応用的な話を学びました。

Unityを触る上で、回転はとても重要な機能です。

特に「指定した方向を見る」といった機能は、必須と言っても良い機能といえるでしょう。

中でもLookAt関数は簡単に使えて、すぐ指定方向を向ける、とても便利な関数です。

是非使いこなしていきましょう!

おすすめのコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

「何の言語から勉強すればいいかわからない・・・」そんなあなたに質問に答えていくだけで、何の言語を学べば良いのか診断いたします!未経験から6ヶ月でプログラミング習得に向けた学習プランが1分で分かる!

最短でプログラミングを習得したい方へ

元々ITリテラシーのある方やプログラムの学び方がわかっている方は独学で習得することも可能でしょう。

ただし、実際の学習期間中はつまづいている時間がほとんどです。

「もう挫折したくない」
「本業と両立しながら、好きな時間で自分のペースで勉強を続けていきたい。」
「自分だけのカリキュラムで効率的に勉強したい」

そんな方はお気軽に侍エンジニア塾までご相談ください。

弊社では、

  • プログラミング基礎学習
  • オリジナルアプリ開発
  • 仕事獲得

までをひと通り学習できます。

まずは無料体験レッスンで、弊社のコンサルタントと一緒にあなた専用の学習方法やカリキュラムを考えてみませんか?

挫折しない学び方や、通常1000時間以上かかる学習時間を1/3にする方法などより具体的なアドバイスもさせていただいています。

詳しくは下の画像をクリックして弊社サービス内容をご確認ください。

cta1

非常識な結果を出す卒業生多数!

エンジニアキャリア戦略

人気記事セレクション

3000名以上来場の人気セミナーが開催決定

18歳で時給6000円だった侍エンジニア塾代表の木内より、『プログラミングで人生を変える』ための学習方法をお教えます。

0からプログラミングを習得し、フリーランスエンジニアになる方法プログラミング学習の効率を劇的に上げる学習メソッドを解説しますので、奮ってご参加ください。

  • 日付:3/30(日)
  • 時間:14:00〜17:00終了予定
  • 場所:当社 道玄坂オフィス
  • 住所:〒150-0043 東京都渋谷区道玄坂2丁目11-1 Gスクエア渋谷道玄坂 4F *Googleマップでは「東京都渋谷区道玄坂2丁目11-1」で検索してください。近隣にスクエア渋谷という別のビルがあるためご留意ください。
  • 参加費:無料
  • URL:https://seminar.sejuku.net/
詳しくは下の画像をクリックして弊社セミナー内容をご確認ください。

LINEで送る
Pocket

この記事が気に入ったら
いいね!をしてフォローしよう

最新情報をお届けします

書いた人

sato

sato

学生時代を含めると、かれこれ10年以上プログラマーとして過ごしています。
様々な言語や環境、プロジェクトに関わってきましたので、より実践的な記事をみなさんにお届きるよう情報発信していきます!