(Unity・LEGOワールドで遊ぶ)コインを集めたら扉が開く

(扉の作成)

  • Cube等を組み合わせて扉ゲートを作成しましょう(形等は自由)


(扉を上に移動させる)

  • 新規にC#スクリプトを作成
  • 名前を「MoveDoor」に変更
  • 下記のコードを書いてチェック
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class MoveDoor : MonoBehaviour
{
    void Start()
    {
        StartCoroutine(MoveUp());
    }

    private IEnumerator MoveUp()
    {
        while (true)
        {
            Vector3 pos = transform.position;

            // 上に移動させる。
            transform.Translate(0, 0.01f, 0);

            yield return new WaitForSeconds(0.01f);

            // どの高さで止めるかは自分の世界に合わせて設定
            if (pos.y > 12.5f)
            {
                break;
            }
        }
    }
}

(設定)

  • このスクリプトは「Door」オブジェクトに追加


(実行結果)

  • 設定が完了したらゲームを再生
  • ドアがゆっくり上に開けば成功です。


(コインを集めたら扉が開くようにする)

  • 今回はコインを3枚集めたら扉が開くようにします。
  • 「CoinGet」スクリプトを開く
  • 下記「追加」部分のコードを記載してチェック
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CoinGet : MonoBehaviour
{
    public AudioClip sound;
    public Text coinLabel;
    private int coinCount = 0;

    // 追加
    public GameObject door;

    private void Start()
    {
        coinLabel.text = "Coin " + coinCount + "枚";
    }

    private void OnTriggerEnter(Collider other)
    {
        if(other.CompareTag("Coin"))
        {
            Destroy(other.gameObject);
            AudioSource.PlayClipAtPoint(sound, Camera.main.transform.position);

            coinCount += 1;
            coinLabel.text = "Coin " + coinCount + "枚";

            // 追加
            if(coinCount == 3)
            {
                door.GetComponent<MoveDoor>().enabled = true;
            }
        }
    }
}

(設定)

  • 「Door」オブジェクトを選択
  • 「MoveDoor」スクリプトのチェックを外す(これでスクリプトがオフになります)

 

  • プレーヤーのオブジェクトを選択
  • 「Door」の空欄に「Door」オブジェクトをドラッグ&ドロップする。


(実行結果)

  • 3枚めのコインを取得した瞬間にドアが上に開けば成功です。