物理演算を無視して、自由にオブジェクトを操作する方法はありますか?
もちろん!アニメーションのことだね!
今回は、地面との接触により一時的にボールが潰れるというアニメーションについて解説します。
▼完成イメージ▼
以下の流れで作業を進めていきます。
- Projectを開く
- オブジェクト[Plane] と[Sphere]を配置
- オブジェクト[Plane] と[Sphere]に色を追加
- オブジェクト[Sphere]に[Animation]を追加
下準備
まずは、ここまでやっていきます。
- Projectを開く
- オブジェクト[Plane] と[Sphere]を配置
- オブジェクト[Plane] と[Sphere]に色を追加
▼ここでの操作方法に不安のある方は、こちらをご参照ください▼
完成イメージは以下のようになります。(具体的なパラメータは以下で解説)
オブジェクトの配置
解説画面と合わせるために、以下のように各オブジェクトの配置や名前を変更していきます。
[Plane]は、オブジェクト名を[Stage]に変更し、[Transform]を以下のように変更します。
同じく[Sphere]は、オブジェクト名を[Basketball]に変更し、[Transform]を以下のように変更します。
[Main Camera]は、[Transform]を以下のように変更します。
Animation追加
Animationウインドウの追加
動きを設定するために、Animationウインドウを追加します。
メニューから、[Window]>[Animation]>[Animation]の順にクリックします。
Animationウインドウが開きます。
お好みで、Animationウインドウをドラッグして、Gameビューにタブとして挿入します。
Animationの設定
[Basketball]にanimationを追加します。
Hierarchyウインドウの[Basketball]を選択し、Animationウインドウの[Create]をクリックします。Animation名を設定するタブが開きますので、[Save As:]を入力して[Save]をクリックします。
Animationウインドウに、先に[Save As:]で入力した[ball_Animation]が追加されます。
Animationを設定したいプロパティを追加します。ここでは[Transform]を追加します。
Animationウインドウの[Add Property]をクリックして、今回は[Position]と[Scale]の右側[+]をクリックします。
オブジェクト[Basketball]の[Position]と[Scale]が追加されます。
項目左の[▶︎]をクリックして展開します。
移動するAnimationの追加
[◆]がある点をAnimationで操作することができます。デフォルトでは、始点(0:00)と終点(1:00)に点が打たれています。新たな点を打って操作できるようにしていきます。
[◆]がある点と点の間に、白の縦線を移動します。青の時間バーで[0:30]付近をクリックします。そして、[◉]録画をクリックし、Sceneビューでオブジェクト[Basketball]をクリックして、[Gizmos]をドラッグします。移動した位置が[Basketball:Position]に反映されますので、必要に応じて、数値を直接入力して調整します。完了したら、再度[◉]をクリックして録画を停止します。
同様の操作は、[Basketball:Position]の[Position.y]右側[●]をクリックして、[Add Key]でも可能です。
動作確認
作成したアニメーションを確認します。
[▶︎]プレイをクリックします。
変形するanimationの追加
地面に衝突時に、ボールが潰れるというアニメーションを追加します。
時間(0:30)に白い線を合わせて、[Basketball:Scale]の[Scale.y]右側の[●]をクリックして、[Add Key]をクリックします。
タイムラインにキーが追加されます。
[Basketball:Scale]の[Scale.y]の値を[1]に変更します。
これで、地面との接触時には潰れた状態になります。
これで、(0:00)〜(0:30)で徐々に潰れていき、(0:30)〜(1:00)で徐々に潰れが解消されます。
次に、地面と接触した瞬間に潰れて、地面と離れる時に潰れが解消されるように変更しています。
[Basketball:Scale]の[Scale.y]の(0:25)と(0:35)にキーを打ち、それぞれ値を[2]に変更します。
これで設定は完了です。
動作確認
[▶︎]プレイをクリックして、作成したアニメーションを確認します。
以上で完了です。