Unity如果它们在同一行上,如何删除gameobject?

时间:2017-05-31 10:28:57

标签: c# unity3d

我正在制作像2辆汽车这样的游戏。我已经编写了代码来创建实例化器。这是一个汽车游戏,有4个车道。让我给你看一张我游戏的照片,是的,这只是为了练习。

enter image description here

玩家应避免使用方形物体并吃掉圆形物体,但有时候2个方形物体会在同一条道路上产生,这使得玩家无法获胜。我写了这个脚本来控制它,但我失败了。请帮我。至少检查我的DetectSameLaneFunction()。告诉我我做错了什么。

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

public class Spawner : MonoBehaviour {

    public GameObject[] objects;
    public float delaytime = 2f; // this is separate for each prefab with which script is attaches 
    public float spawnrate = 1f; // this is separate for each prefab with which script is attaches 

    public static int lastgameobjectindex;
    public static GameObject lastgameobject;
    public static GameObject SecondLastGameObject;
    private float loadingtime;
    private GameObject go; // just a temporary variable

    public static List<GameObject> spawnobjects = new List<GameObject>();
    // Use this for initialization
    void Start () {
        loadingtime = delaytime;
    }

    // Update is called once per frame
    void Update () {
        if (Time.time > loadingtime)
        {
            float randomness = spawnrate * Time.deltaTime;
            if ( randomness < Random.value)
            {
                Spawners();
            }
            NextLoadTime();
        }
    }

   private  void Spawners()
    {
        int spawnnumber = Random.Range(0, 2);
        GameObject go = Instantiate(objects[spawnnumber]) as GameObject;
        go.transform.position = this.transform.position;
        spawnobjects.Add(go);
        Debug.Log(spawnobjects[spawnobjects.Count-1]);
        DetectSameLaneObjects();
      /*  if (spawnobjects.Count > 4)
        {
            spawnobjects.RemoveAt(0);
        }*/
    }

    private void  DetectSameLaneObjects()
    {
        if (spawnobjects.Count > 3)
        {
           lastgameobject = spawnobjects[spawnobjects.Count - 1];
            SecondLastGameObject = spawnobjects[spawnobjects.Count - 2];
             lastgameobjectindex = spawnobjects.Count - 1;
            if (SecondLastGameObject.transform.position.x != lastgameobject.transform.position.x
                )
            {
                if (Mathf.Abs(lastgameobject.transform.position.x- SecondLastGameObject.transform.position.x) < 2.3f)
                {

                    Debug.Log("Destroy function getting called");
                     Destroy(spawnobjects[lastgameobjectindex]);
                    spawnobjects.RemoveAt(lastgameobjectindex);

                }
            }
        }
    }
    void OnDrawGizmos()
    {
        Gizmos.DrawWireSphere(this.transform.position, 0.6f);
    }

    void NextLoadTime()
    {
        loadingtime = Time.time + delaytime;
    }

}

0 个答案:

没有答案