5[ゲーム作る]unity講座、キャラの自動生成、増殖(5)

5[ゲーム作る]unity講座、キャラの自動生成、増殖(5)

その1動画

その2動画

仕様

仕様

プレハブでキャラを自動生成
InvokeRepeating()繰り返し

StartCoroutine(“Dead”)
IEnumerator Dead()

手順
1.画像読み込み、プレハブを作成
2.プレハブでキャラを自動生成するスクリプト
(5)の2
3.クリックするとキャラが変わるスクリプト
4.キャラを消すスクリプト

>>【ゲーム作る】unity、キャラが動く(1)
>>【ゲーム作る】unity講座、キャラが衝突すると動きだす(3)

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

public class PrefabHassei : MonoBehaviour
{
    /*
    back画像にアタッチするスクリプト
    このスクリプトでコロナウィルスを発生させる。
   */
    public GameObject newPrefab;//corona prefabをドラッグする
    public float interValsec = 1.0f;
    private int sortInt = 0;//order In Layerを常に上に重ねる

    // Start is called before the first frame update
    void Start()
    {
        InvokeRepeating("CreatePrefab", interValsec, interValsec);//指定する関数、何秒後に実行するか、何秒間隔、の順番
    }

    // Update is called once per frame
    void Update()
    {
        
    }
    void CreatePrefab()
    {
        Vector3 area = GetComponent<SpriteRenderer>().bounds.size;
        Vector3 newPos = this.transform.position;

        GameObject newGameObject = Instantiate(newPrefab) as GameObject;//コロナを生成する
        Debug.Log("sortInt:" + sortInt);
        newGameObject.GetComponent<Renderer>().sortingOrder = sortInt;//order In Layerを常に上に重ねる。チラツキ防止
        sortInt++;
        if (sortInt > 200)
        {
            sortInt = 0;
        }
        newPos.x += Random.Range(-area.x / 2 + newGameObject.GetComponent<Renderer>().bounds.size.x / 2,
            area.x / 2 - newGameObject.GetComponent<Renderer>().bounds.size.x / 2);//キャラのサイズ半分を内側にする
        newPos.y += Random.Range(-area.y / 2 + newGameObject.GetComponent<Renderer>().bounds.size.y / 2,
            area.y / 2 - newGameObject.GetComponent<Renderer>().bounds.size.y / 2);//キャラのサイズ半分を内側にする
        newPos.z = -5;
        Debug.Log("object.bounds.size.x:" + newGameObject.GetComponent<Renderer>().bounds.size.x);
        newGameObject.transform.position = newPos;

    }
}
//画像側にアタッチするスクリプト、クリックするとアニメーションが変わって消える
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CharChange : MonoBehaviour
{
    /* 2020/04/20
    コロナウィルスにアタッチするスクリプト
    黄色から青色になるためにアニメーターでdamageパラメータを設定しておく必要がある。
    プレハブで自動生成されたコロナは、クリックされると画像が変わる
    その設定は、アニメーターで設定しておく。

    */
    private Animator coronaAnim;
    private bool clickFlag;

    // Start is called before the first frame update
    void Start()
    {
        coronaAnim = GetComponent<Animator>();
        clickFlag = false;
    }

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

    private void OnMouseDown()
    {
        //Colliderを設定しておく
        clickFlag = true;
        StartCoroutine("Dead");//クリックしたらDeadを呼び出す。

    }
    
    IEnumerator Dead()
    {
        yield return new WaitForSeconds(1.0f);//指定した時間待つ
        Destroy(this.gameObject);//自分を削除する
    }
    private void FixedUpdate()
    {
        coronaAnim.SetBool("damage",clickFlag);//アニメーターのパラメータdamage
    }
}

 

こちらの記事もどうぞ