(GateBoxの作成)
- 新規にCubeを作成
- 名前を「Block」に変更
- 「Scale」で大きさ変更(大きさは自由)
- 組み合わせて箱を作成しましょう
- まずはここまで作りましょう!
- ここまでできたら、パーツオブジェクトを「全部選択」して「右クリック」
- 「Create Empty Parent」をクリック
- 名前は「GateBox」に変更
- 親子関係になっています。
- 最後にデザインを考えて完成です。
- 好きな場所に設置しましょう。
(扉を上に移動させる)
- 新規に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枚めのコインを取得した瞬間にドアが上に開けば成功です。