AにぶつかるとBが動き出す

提供: socialakiba wiki
移動: 案内検索

簡単なアニメーションはもう理解しましたね?

最初止まっていたものが途中から動き出すようにするには、 アニメーションを2つ作らなくてはなりません。

1つめのアニメーションは止まっているだけなので、全くキーを打つ必要がありません。 適当な名前(New Animation.anim とか)で保存してください。

Unitychan009.png

そのあとすぐに、 New Animation と書かれたメニュー(つまり、アニメーションの名前が並んだメニュー)を開くと、 それまでに作成したアニメーションの名前が並んだ一番下に、 create new clip という項目があるので、これをクリックします。


Unity2d024.png

別の名前(New Animation2.anim とか)で保存してください。

これでアニメーションが2つできました。

1つ目のアニメーションには手を付けず、 2つ目のアニメーションに適当にキーを打っていきます。


Unity2d025.png

Animator というタブを開きます。

Entry、Any State、Exit というのは勝手にできます。

Entry から New Animation に矢印が引いてあるのは、 ゲームが開始してすぐに New Animation という状態に遷移するという意味があります。 New Animation にはキーが打ってないので最初は止まっています。


Unity2d026.png

New Animation から New Animation2 に状態を遷移させるために、 New Animation の上で右クリックして、Make Transition。 矢印が延びるので、New Animation2の上でクリック。

これで New Animation から New Animation2に矢印が引けましたね?


Unity2d027.png

New Animation から New Animation2に状態を遷移させるためのパラメータを作ります。

Layers になっていたら Parameters に切り替えてください。

パラメータのリストは最初 List is Empty となっていると思います。その上の + ボタンを押して Bool を選択して、 適当な名前(isMoving とか)のパラメータを追加してください。 この Bool 形のパラメータは true か false か、二つに一つの値しかとりません。

isMoving が true に切り替わったときに New Animation から New Animation2 に遷移するようにします。


Unity2d028.png

New Animation から New Animation2 への矢印を選択した状態で、inspector の conditions で + をクリック(※連打すると空の condition が出来たりしてはまる)。

isMoving を true、にします。


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour {
    public GameObject platform;

	// Use this for initialization
	void Start () {

    }
	
	// Update is called once per frame
	void Update () {
		
	}

    void OnCollisionEnter2D()
    {
        platform.GetComponent<Animator>().SetBool("isMoving", true);
    }
}
Unity2d029.png

上のようなスクリプトを書いて、これを hatena の inspector にドラッグアンドドロップして、 hatena のコンポーネントに仕込む。

さらにその platform のところを(まるちょんをクリックしてメニューを開いて scene の中から platform を選んで) platform にする。


補足

GetComponent<Animator>() は GameObject からその Animator を取り出している。

Animator に対して SetBool することで、Animator が持っている Bool 形のパラメータの値をセットすることができる。