アニメーションクリップ では、アニメーション可能なプロパティならばすべて、アニメーションカーブ を利用することができます。すなわち、アニメーションクリップでそのプロパティの変化を時系列に制御できます。Animation ビュー (左側) のプロパティリストには、現在アニメーションしているプロパティが表示されます。Animation ビューを DopeSheet モードにすると、各プロパティのアニメーションの値が、単に直線の軌跡のように表示されます。しかし、Curves モードでは、プロパティの値の変化はグラフの線として表示されます。どちらのモードを使用しても、カーブは表示されます。DopeSheet モードでは、簡易化されたデータが表示され、キーフレームが発生したときにだけ表示されます。
Curves モードでは、アニメーションカーブ は色付きのカーブインジケーターとともに表示されます。それぞれの色は、現在プロパティリストで選択されているプロパティを表しています。アニメーションプロパティにカーブを追加する方法については、アニメーションビューの使用 のセクションを参照してください。
アニメーションカーブ には複数の キー があり、カーブが通過する制御ポイントです。これらのポイントは Curve エディター でカーブ上の小さなひし形で表示されます。1 つや複数の表示されたカーブに キー があるフレームを キーフレーム と呼んでいます。
あるプロパティで、現在プレビューしているフレームに キー がある場合、カーブのインジケーターにはひし形が表示されます。さらに、プロパティリストでも値の隣にひし形が表示されます。
Curve エディター は、選択されたプロパティのカーブのみ表示します。プロパティリストで複数のプロパティを選択した場合、カーブは一緒に重ねて表示されます。
キーフレームボタン をクリックすると、現在プレビューしているフレームに キーフレーム を追加することができます。
キーフレームボタン をクリックすると、現在プレビューしてるフレームに キーフレーム を加えることができます。これによって、現在選択しているカーブのすべてにキーフレームが加えられます。別の方法として、任意のフレームの 1 つのカーブにキーフレームを加えるには、新しく キーフレーム を加えたいカーブの加えたい場所をダブルクリックします。また、キーフレームライン を右クリックして、コンテキストメニューから Add Keyframe を選択して キーフレーム を追加することも可能です。配置した後は、マウスを使って キーフレーム をドラッグして動かすことができます。さらに、一度に複数の キーフレーム を選択してドラッグすることもできます。 キーフレーム を削除するには、選択して Delete を押すか、キーフレーム上で右クリックしてコンテキストメニューから Delete Keyframe を選択します。
Animation ビュー を使うと、ゲームオブジェクト の単なる位置、回転、スケールよりもはるかに多くをアニメーション化することができます。コンポーネント と マテリアル のプロパティはすべて、アニメーションすることができます。それは独自に作成したスクリプトコンポーネントのパブリック変数さえも可能です。複雑なビジュアルエフェクトや挙動をもつアニメーションでさえ、関連するプロパティに アニメーションカーブ を加えるだけで作成できます。
次の種類のプロパティは、アニメーションシステムでサポートされています。
配列はサポートされておらず、構造体や上記以外のオブジェクトも同様です。
Boolean プロパティは、0 の値は False と等しく、それ以外の値は True と等しくなります。
以下は、Animation ビュー を利用できる多くの例の一部です。
アニメーションカーブ を用いてゲームロジックを制御する場合、Unity で アニメーションの再生とサンプリング 方法に注意する必要があります。
Unity では回転は内部的に Quaternion (クォータ二オン) で表現されます。Quaternion は .x 、.y 、.z および .w の値で構成されています。一般的には、これらの使い方を熟知していないかぎり、手動で変更すべきではありません。その代わりに、回転はたいてい Euler Angles (オイラー角) で操作され、.x 、.y 、.z の値がそれぞれの 3 つの軸の周りの回転を表しています。
2 つの回転を補間する場合は、Quaternion か Euler Angles の値のどちらかで実行することになります。 Animation ビュー を使用すると、Transform 回転をアニメーション化するときに使用する補間方法を選択することができます。ただし、回転は、どの補間方法を選択しているかにかかわらず、常に Euler Angles で表示されます。
クォータニオン補間は、2 つの回転間の最短のパスに沿って、常に回転間に滑らかな変化を生成します。これにより、ジンバルロックなどの回転補間の乱れを回避することができます。しかしクォータニオン補間は 180 度以上の回転を表すことができません。なぜなら、常に最短のパスを探すという挙動があるためです。(球の表面で任意の 2 点を定めて想像してみてください。その間を結ぶ最短の線は決して球の半分より長くならないはずです) 。
クォータニオン補間を使用して180 度より大きい数字の回転値を設定すると、Animation ウィンドウで描かれたカーブは、やはり、180 度より大きい範囲を表しているように見えます。ただし、実際のオブジェクトの回転は最短のパスで行われています。
クォータニオン補間を回転に使用する場合、x、y、z のいずれかのカーブのキーか接線を変更すると、他の 2 つのカーブの値も変化します。なぜなら、3 つのカーブはすべて、内部ではクォータニオンで扱われているからです。クォータニオン補間を使用するとき、キーは常にリンクされているため、x、y、z のいずれかのカーブのうち 1 つのカーブの特定のタイミングにキーを作成すると、残り 2 つのカーブにも、その同じタイミングにキーが作成されます。
オイラー角の補間は、たいていの人が作業時に使っています。オイラー角は任意の大きな回転を表すことができ、.x 、.y 、.z のカーブは互いに独立しています。オイラー角の補間では、複数軸で同時に回転するときに発生するジンバルロックなどの問題はありますが、一度に 1 つの軸で回転する単純な回転に対しては、直感的に作業できます。オイラー角補間を使用する場合、Unity は内部的に、クォータニオンでベイクします。これは、外部のプログラムから Unity にアニメーションをインポートするときに起こることと同様です。このカーブのベイクは、処理過程で余分なキーを追加する可能性があり、接線の種類が 定数 の場合、サブフレームのレベルでは正確でない場合があることに注意してください。
Did you find this page useful? Please give it a rating:
Thanks for rating this page!
What kind of problem would you like to report?
Thanks for letting us know! This page has been marked for review based on your feedback.
If you have time, you can provide more information to help us fix the problem faster.
Provide more information
You've told us this page needs code samples. If you'd like to help us further, you could provide a code sample, or tell us about what kind of code sample you'd like to see:
You've told us there are code samples on this page which don't work. If you know how to fix it, or have something better we could use instead, please let us know:
You've told us there is information missing from this page. Please tell us more about what's missing:
You've told us there is incorrect information on this page. If you know what we should change to make it correct, please tell us:
You've told us this page has unclear or confusing information. Please tell us more about what you found unclear or confusing, or let us know how we could make it clearer:
You've told us there is a spelling or grammar error on this page. Please tell us what's wrong:
You've told us this page has a problem. Please tell us more about what's wrong:
Thank you for helping to make the Unity documentation better!
Your feedback has been submitted as a ticket for our documentation team to review.
We are not able to reply to every ticket submitted.