Skip to main content

ひょこ生まれ!

卵を無事に巣まで届けたら、ひょこが生まれ、ランダムに歩くようにしましょう。

卵を検知する「EggDetector」

まず、卵が巣に届く検知スクリプトを作成しましょう。卵かどか「Egg」というタグで識別すると:

// 卵を検知する
public class EggDetector : MonoBehaviour
{
    // 検知したら発生するイベント
    public event System.Action<GameObject> Detected;

    private void OnTriggerEnter(Collider other)
    {
        if (other.CompareTag("Egg"))
            Detected?.Invoke(other.gameObject);
    }
}

もちろん、卵に「Egg」タグを追加しなければならない。

image.png

そして、巣にスクリプトをアタッチしてください(すでにトリガー付き)

image.png

次々の卵を生成

次、ゲームマネージャークラスを作成し、卵が巣に届いたら卵を消し、新しい卵を生成しましょう。まず、ゲームマネージャークラスを作成

スクリプト

public class GameManager : MonoBehaviour
{
    // 卵のプレハブ
    [SerializeField] 
    private GameObject eggPrefab;

    // 卵の開始位置
    [SerializeField] 
    private Transform eggStart;
    
    // 卵のゴール(巣)
    [SerializeField] 
    private EggDetector goal;

    // 新しい卵を生成
    private void CreateEgg()
    {
        // プレハブから卵を生成し、開始位置にする
        var egg = Instantiate(eggPrefab);
        egg.transform.position = eggStart.position;
    }
    
    // 卵が巣に届いたときのイベントを受け取る
    private void OnEggDetected(GameObject egg)
    {
        // 卵を廃止し、次のを生成
        Destroy(egg);
        CreateEgg();
    }
    
    private void Start()
    {
        // 開始の卵を生成
        CreateEgg();

        // イベントに登録
        goal.Detected += OnEggDetected;
    }

    private void OnDestroy()
    {
        // イベント登録解除
        goal.Detected -= OnEggDetected;
    }
}

Unityの設定

すでに作った卵をプレハブにし、シーンから削除してください

 

ひょこプレハブを作成