6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Blockが消えるのと出現するのをアニメーションさせてみる

Last updated at Posted at 2014-04-22

前回 はとにかくBlockを消して出現するようにしてみましたが、
今回は少しアニメーションするようにしてみます。

ポイント

  • Animationを作成する
  • AnimatorでBlockのAnimationを管理する
  • Scriptで穴あけビームが当たったらAnimatorの状態を遷移させる

Animationを作成する

まず Hierarchy の BlockPrefab -> Cube を選択しておきます。
次に Window → Animation として、Animation編集画面を表示します。

Window_と_Menubar.png

そのAnimation Windowで 「Add Curve」を押すとファイル名を決めるダイアログが表示されるので
BlockAnimationとでもしておきます。

Create_New_Animation_と_UnityちゃんがBlockを破壊して、しばらくしたら元に戻るようにする_-Qiita_と_ターミナル—screen—_155×33.png

ここで保存すると先ほど選んだ Cubeに対して、Animator Componentと今保存した BlockAnimationがStateと共に関連付けられるようです(後で少しいじります)。

もう一度、[Add Curve] を押して、 Transform -> Scale (の右側の+)を選びます。
UnityEditorInternal_AddCurvesPopup_と_UnityちゃんがBlockを破壊して、しばらくしたら元に戻るようにする_-_Qiita.png

ここで時間毎の形状についてのいろいろな値の変化を指定することができます。
下の方の Curvesをクリックして、 1秒後にScaleが x,y,z全て0になるようにしてみます。
UnityちゃんがBlockを破壊して、しばらくしたら元に戻るようにする_-_Qiita.png

また、4秒後と10秒後にKeyFrameを追加して、4秒後から10秒後にかけてゆっくりScaleを戻すようにしてみます。
UnityちゃんがBlockを破壊して、しばらくしたら元に戻るようにする_-Qiita_と_ターミナル—screen—_155×33.png

AnimationのWindowの操作は私はよくわかってないので見よう見まねです。。。(いずれはUnityちゃんの動作もここで頑張って作るのだろうか。AssetStore探索の旅はまだ成果ないですし。。)

とりあえず Scaleについて x,y,z ともに下記のような変化をするように設定してみます。

UnityちゃんがBlockを破壊して、しばらくしたら元に戻るようにする_-Qiita_と_ターミナル—screen—_155×33.png

AnimatorでBlockのAnimationを管理する

次に、Animatorタブを開くと以下のようになっています。

demo1_unity_-RoadRunner-_Web_Player.png

一つ「Normal」というStateを作成し、そのNormalを右クリックして「Set As Default(初期状態)」しておきます。
また、BlockAnimationからNormalに対してTransitionを作ります。

demo1_unity_-RoadRunner-_Web_Player.png

そのTransitionを選択して、 Transition Duration や Exit Time を 0 に設定します。

demo1_unity_-RoadRunner-_Web_Player.png

こうしておくと、BlockAnimationに遷移したら1度Animationが再生され、
その後またNormalに戻るようになります。

Scriptで穴あけビームが当たったらAnimatorの状態を遷移させる

BlockControl.csのHitGunメソッドを以下の1行に置き換えます。

BlockControl.cs
using UnityEngine;
using System.Collections;

public class BlockControl : MonoBehaviour {
	private Animator animator;

	// Use this for initialization
	void Start () {
		animator = GetComponent<Animator>();
	}
	
	// Update is called once per frame
	void Update () {
	}

	void HitGun() {
		animator.Play("BlockAnimation");
	}
}

これで実行すると、穴を開けたら小さくなって消滅し、しばらくしたら復元するようになります。

さいごに

無いよりはマシ程度のアニメーションがつくようになりました。

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?